Oluşturulan 3B ağaç kafesleri


16

Bu satırlarda henüz bir soru bulamadım, yanılıyorsam beni düzeltin.

Ağaçlar (ve genel olarak fauna) oyunlarda yaygındır. Doğası gereği, prosedürel üretim için iyi bir adaydırlar.

Elbette SpeedTree var , eğer karşılayabiliyorsanız; anlayabildiğim kadarıyla, ağaç kafeslerinizi çalışma zamanında oluşturma imkanı sağlamaz. Sonra orada SnappyTree dayanan bir online webgl bazlı ağaç jeneratör proctree.js javascript bazı ~ 500 satır.

Önceden birkaç düzine ağaç kafesi oluşturmak için yukarıdakilerden birini (ya da tökezlemediğim başka bir ağaç üreticisini) kullanabilir ya da 3B modellerde sıfırdan modelleyebilir ve daha sonra birkaç varyant için rastgele aynalayabilir / ölçekleyebiliriz. ..

Ama ücretsiz, bağlanabilir bir ağaç kafes jeneratörüne sahip olmayı tercih ederim.

Muhtemel çözümler:

  • Proctree.js'yi c ++ 'a taşıyın ve açık kaynak lisansı ile uğraşın (gpl gibi görünmüyor, bu yüzden yapılabilir; yazar, lisansı daha da ücretsiz hale getirmek için işbirliği yapmaya da istekli olabilir).
  • L sistemlerine dayanarak kendimi yuvarla.
  • Rahatsız etmeyin, sadece çevrimdışı oluşturulan ağaçları kullanın.
  • Henüz bulamadığım başka bir yöntem kullanın.

Güncelleme 2015 : proctree.js'yi c ++ https://github.com/jarikomppa/proctree'ye taşıdı


5
Kendi haddeleme için, ben mevcuttur kitabı Prusinkiewicz ve Lindenmeyer tarafından 'Bitkilerin algoritmik güzellik', öneriyoruz algorithmicbotany.org/papers/#abop . Kitap ve site aynı zamanda sanal botanik üretimi hakkında birçok araştırma makalesini listeliyor.
Exilyth

WebGL ile 3DFlora adlı bir çevrimiçi araç oluşturdum. 80'den fazla parametreye sahiptir ve sonuçları bir obj dosyası olarak indirmenize izin verir. Onunla hemen hemen her türlü bitki yaratabilirsiniz. Buradan kontrol edin: 3dflora.sina-s.com
user2002741

Yanıtlar:


12

Demolarımın çoğu daha eski olmasına rağmen bu alanda oldukça fazla iş yaptım:

(flash 2010)
http://genesisbbs.com/appstem.html (tıklayın ve sürükleyin fare)
http://genesisbbs.com/appstem2.html
(directX 2006)
http://vimeo.com/5206795

Bunu eğlenmek için yapıyorsanız, kendinizinkini yuvarlamanızı şiddetle tavsiye ederim. Neredeyse kesinlikle Kuaterniyonlarla çalışmanız gerekecek . Onları anlamak çok zordur, ancak kullanmak için çok derine gitmenize gerek yoktur. Bir kuaterniyonu ekstra bileşenli bir vektör olarak düşünün: döndürme. Bitkilerinizin büyüdükçe bükülmesini ve dönmesini istiyorsanız, kuaterniyonlara ihtiyaçları olacaktır.

Öğrenilecek diğer şeyler:
Lichtenberg Figürleri
Laplacian Growth
Voronoi Diagrams
En Yakın Komşu algoritmaları (google onları)

Ben (kişisel olarak), nerede büyüdüğü için, örneğin [tohum -> [kök] / [gövde-> şube -> [çiçek / yaprak]] için bir dilbilgisi dikte etmek dışında, L-Sistemlerinin kullanımını caydırırdım. L sistemleri, güneş ışığı yönü, yerçekimi, engeller vb.Gibi çevresel uyaranlara cevap vermek için iyi değildir.

Hız endişelerine gelince, gerçek zamanlı olarak tek bir ağaç üretilebilir. Bununla birlikte, bellek amaçları ve performans için, sadece küçük bir ağaç kümesi oluşturmak ve ormanlarla uğraşıyorsanız onları biraz örneklemek isteyeceksiniz.

Mevcut ağaç üreticilerinin çoğu, Maya ve benzeri için kullanılan yüksek kaliteli olanların yanı sıra o kadar da büyük değildir (IMHO).

Ayrıca, ağacı oluşturmak için voksellerin kullanılmasını şiddetle tavsiye ederim (daha sonra gerekirse bir ağ ile cilt). Voksellerin avantajı, Laplacian büyümesi ve çeşitli otomatalar (Conway'in yaşam oyunu değil, diğer kurallar ilginç sonuçlar üretiyor) gibi büyüme algoritmalarını kolayca simüle edebilmenizdir.


3

Şahsen muhtemelen önceden oluşturulmuş ağaçlarla başlardım ve sadece çalılar, çimen, mantar ve diğer şeylerle dolu bir tekme orman işleme motoruna sahip olduğumda, daha değişken ağaç ağlarına ihtiyacım olursa aramaya başlardım.

Bununla birlikte, ngPlant'a bir göz atabilirsiniz . Bir GPL prosedürel ağaç modelleyici uygulaması içerir, ancak tüm ağır kaldırma yapan kütüphaneler BSD lisanslıdır. C ++ ile yazılmıştır.

Orman renderleme için Ogre renderleme motoru için (MIT lisanslı) Sayfalı Geometri vardır .


3

Prosedürel ağaçların ana problemi onları üretmek değil, çalışma zamanında her kareyi oluşturmaktır. AAA oyunlarında birçok özdeş ağacı görmenizin nedeni budur, benzersiz ağaçlar yaratan teknoloji uygulayamazlar veya yazamazlar, oyun için diğer özelliklerin bir kısmını kesmeniz gerektiği anlamına gelir. koşmak.

Birçok özdeş ağacınız varsa, onları her açıdan farklı görünmeleri için döndürebilir ve eşit olarak ölçeklendirebilirsiniz ve özdeş olduklarından, her kareden değerli milisaniyeler kaydetmek için bunları örnekleyebilirsiniz.

Bu sorunu bir saniyeliğine düşünerek, mutlu bir ortam olabilir - birkaç farklı ağaç parçası, gövde, dal, yaprak vb. Üretmeye ne dersiniz .. ama hepsi ağaç lego gibi modüler yollarla birbirine uyuyor. Daha sonra birçok kombinasyona sahip olabilirsiniz ve bu nedenle oldukça eşsiz ağaçlara sahip olabilirsiniz, ancak daha hızlı çalışan bir oyun için birçok parçayı da örnekleyebilirsiniz.


Parçalı fikir dışında bu cevap gerçekten yeni bir şey eklemiyor.
Jari Komppa

3
OP çok minnettar olduğunda her zaman güzel. Bir QandA sitesi için yayınınızın soruları farklıdır. Ayrıca bu cevap doğrudan mermi puanlarınızı ele alır.
SirYakalot

Evet, orada bulundum, özür dilerim.
Jari Komppa

1

Bir süre önce [d] ağacına rastladım ... Bir projeyi test etmek için sadece az bir süre kullandım ama bunun sebebi sadece geliştirmeyi durdurmamdı - araç size oynamak için çok çeşitli jeneratör seçenekleri sunuyor ve hatırladığım kadarıyla oldukça hızlı. Bir bağlantı aşağıda.

Dezavantajı, dahil edebileceğiniz bir ağaç jeneratörü olmamasıdır. Birkaç ağacı önceden oluşturmalı ve daha sonra benzersizliğini değiştirmek için verileri çalışma zamanında yerleştirirken değiştirmelisiniz.

En iyisi TreeD'i kullanmak ücretsizdir ve model paketleri, doku paketleri, 3D model jeneratörleri veya doku jeneratörleri olmadıkları sürece kendi projelerinize yaptığınız ağaçları ticari veya ücretsiz olarak dahil edebilirsiniz.


Kütüphane biçiminde olsa bile diğer serbest üreticileri görmek güzel.
Jari Komppa

1

Bu temiz küçük bir çözüm ve bunu bir projede kullandım ve oyunun neden çalıştığını anında gen ağaçları oluşturmanın yeterince hızlı olduğunu söyleyebilirim. Kesinlikle ayrıntılı değil, ancak reklam panolarından kurtulduysanız oldukça düzgün olabilir.

http://ltrees.codeplex.com/


XNA kullanıcıları için iyi bir çözüm gibi görünüyor.
Jari Komppa
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.