Bir kroki çizimi veya çizgi film gibi, çizgilerle 3D bir dünya nasıl çizilir


9

Dilbert gibi bir çizgi romanda gördüğünüz gibi, gölgelendirme olmadan ve tüm çizgiler eşit ağırlığa sahip bir mürekkep çizimi yapmayı düşünün. Bu aktif bir 3 boyutlu dünyayı temsil eder, ancak nesnelerin dokuları yoktur, ancak mozaik üçgenleri de görmezsiniz.

Bir örnek uğruna, ayın yüzeyini çizmeyi düşünün. Çizebileceğiniz çizgiler, tepelerin üst kenarı boyunca, yüzeyin genel seviyesine ulaştığı yere kadar olacaktır. Bunların arkasında, daha büyük tepeler için, mesafeye ve ufukta görünen şeyin arkasında aynısını yapardınız. Kraterler için, dış kenar için yakın bir daire çizebilir ve kısmen alt kenar için bir daire çizebilirsiniz. Kayalar kenar çevresinde ve büyük görünür kenarlar boyunca bir çizgiye sahip olacaktır. Astronotların dış kenarları boyunca ve uzay giysilerinin başlıca özellikleri boyunca bir çizgisi olacaktı.

Deneyimli bir programcıyım ama 3D programlamaya yeniyim. Böyle bir oyunu düşünmeden edemiyorum - yapıldı mı? Ve bunu nasıl yaparsınız? İki sorun akla geliyor - önemli kenarları bulmak ve çizmek. Sıradan bir 3D motor yerine, matrislerden kodlanmış bir "motora" mı ihtiyaç duyar?


Sizi uyarmak istiyorum, insanlar 3D'yi 2D ekranda algılamakta iyi değiller, bu yüzden bir sahnenin derinliğini anlamanın çok önemli bir parçası olan gölgelendirmeyi ortadan kaldırmak, 3D'ye dayanan bir oyunda iyi çalışmayabilir oynanışı
Jeff

Birkaç yıl geri PS2 için piyasaya Okami, - sizin tarif edilmektedir tarzına uygun bir oyun vardır en.wikipedia.org/wiki/%C5%8Ckami
Eran Galperin

1
Güzel, bunu kendim yapmayı düşünüyordum. Bence sadece çizgiler değil, bir çeşit cel gölgelendirme kullanmak istersiniz .
mpnk121

Yanıtlar:


11

Temel olarak, bahsettiğiniz şey kenar bulmadır ve bunu çeşitli şekillerde yapan bir dizi oyun vardır.

Muhtemelen ilki Jet Set Radio'dur (batıda "Jet Grind Radio" olarak yayınlanmıştır). Bundan bir veya iki ay sonra, benzer bir render tekniği geliştirdiğim oyundan çıktı: Looney Tunes: Space Race . (Uzay Yarışı'nda düzgün bir çizgi kalınlığı sağlamak için elimizden gelenin en iyisini yaptık, Jet Set Radio ise eşit olmayan çizgi genişliklerini görsel stilinin büyük bir parçası haline getirdi).

Bu iki oyun da aynı şekilde çalıştı; ana hatlarıyla belirtilecek her nesne için, nesneyi iki kez çizin. İlk olarak, bir tepe itme uygulanmış (yani, her bir tepe noktasını normal vektörü boyunca belirli bir mesafeye taşıyın) ve 'çizgilerin' görünmesini istediğiniz renkte geri dolgu ile ters çevirin. Ardından, tepe itme olmadan ve normal arka yüzle tekrar çizin. Bu işlem çifti size bir nesnenin etrafında renkli bir siluet verir ve bu ilk iki oyunun hepsi kullanılır. Uzay Yarışı'nda, nesnenin kameradan ne kadar uzak olduğuna bağlı olarak, köşeleri değişen bir mesafeye iterek sabit çizgi genişliği yanılsamasını sürdürdüm. Jet Set Radio'da, bunlar (nesneler kameradan uzaklaştıkça daha büyük veya daha küçük hale gelmesine neden oldu)

NVidia ve ATI, bu efekti elde etmek için, genellikle her piksel için kameradan piksele vektöre dik olan normalleri arayan piksel gölgelendiricileri etrafında dönen birkaç farklı yol göstergesine sahiptir, ancak bunların hepsi çok yüksek çözünürlüklü ağlar gerektirir ve tutarsız üretir. Uygulamada çizgi genişlikleri. Herhangi bir oyunun gerçekten bu tür bir yaklaşım kullanıp kullanmadığını bilmiyorum; Bu şirketlerin örneklerine benzeyen bir şey gördüğümü sanmıyorum.

Ayrıca , bunu gerçekten doğru bir şekilde yaptığı anlaşılan tek oyun olan Dragon's Lair 3D'ye de işaret edeceğim ; modeldeki her çokgenin nokta ürününün poligonun ve çokgenin normal olması ve her bir çokgenin kameraya bakıp bakmayacağını görmek ve daha sonra tüm bağlı çokgen çiftlerini kontrol etmek; herhangi bir çokgen çifti bir kenarı paylaşırsa ve bir çokgen kameraya bakar ve bir çokgen bunu yapmazsa, ekran boşluğundaki kenar boyunca ince, sabit genişlikte bir çizgi çizer. (Bu işi Uzay Yarışı için Dreamcast'te yeterince hızlı yapamadım, ya da kullanardım. Bugün, modern bilgisayarlarda, bu etkiyi yapmaya çalıştığım yol tamamen budur '

Dragon's Lair 3D, orada bulması için bir siluet kenarı olmasa bile, aslında farklı renkteki alanlar veya tepe-normal süreksizlikler arasında çizgiler çizen farkında olduğum tek oyundur. Sanatçılarının her zaman bir çizgi almak için çokgen kenarları atamalarına izin veren özel bir araca sahip olduklarından şüpheleniyorum.

Diğer bazı kişiler tarafından bahsedilen Okami , Jet Set Radyosu ve Uzay Yarışı'na benzer şekilde çift renderli bir köşe itme yaklaşımı kullanıyor, ancak fırçalanmış bir sanat tarzı kullanılarak inşa edilmiş dokuları kullanıyor. (Örneğin, uzaktaki tepeler fırça darbeleri olarak standart dörtlü olarak çizilmiş bir dokuya çizilir). Okami çok güzel, ama sorduğunuz teknolojiye gerçekten değdiğini sanmıyorum; şüphesiz, etkisi için eski yaklaşımı kullanıyor.

Şimdi, sizin durumunuzda, bunu renk dolgusu olmadan yapmayı, dünyayı sadece çizgilerle çizmeyi soruyorsunuz. Bunu yapmak kolaydır; tüm çokgenleri ışıksız ve arka plan rengiyle eşleşen tek bir sabit renkte çizin. Bu yaklaşımlardan herhangi biri, oyun motorunuzu değiştirmeden bu yaklaşımı kullanarak çalışmalıdır. Arka plan kenarlarının çok çabuk kafa karıştırıcı olabilecek ön plan nesnelerini göstermesini engelleyeceklerinden, bu "arka planla aynı renk" çokgenlerini çizmek önemlidir.


Teori ve ilginç örnekleri içeren +1 parlak cevap
Maik Semder

Müthiş cevap, yazdığınız zaman için teşekkür ederim.
cheerless bataklık

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.