Давайте пограємо зі змією/Скриптуємо Блендер: відмінності між версіями

Вилучено вміст Додано вміст
Bunyk (обговорення | внесок)
Немає опису редагування
Bunyk (обговорення | внесок)
Рядок 164:
 
== Генерація свого мешу ==
=== Трикутник ===
 
Тепер давайте намалюємо свій меш. Що небудь попростіше. Найпростіше - трикутник, з нього і почнемо. Ось функція яка його створює:
 
<source lang="python">
def createtriangle():
obj=NMesh.GetRaw()
 
v1=NMesh.Vert(0,10,0)
v2=NMesh.Vert(-1,0,0)
v3=NMesh.Vert(1,0,0)
 
obj.verts.append(v1)
obj.verts.append(v2)
obj.verts.append(v3)
 
f=NMesh.Face()
f.v.append(obj.verts[0])
f.v.append(obj.verts[1])
f.v.append(obj.verts[2])
obj.faces.append(f)
 
NMesh.PutRaw(obj,"Triangle",1)
</source>
 
А тепер по порядку. Спочатку ми створюємо базовий об'єкт, з чистим мешем:
 
<source lang="python">
obj=NMesh.GetRaw()
</source>
 
Якщо цій функції передати параметром ім'я якогось існуючого об'єкта, то меш того об'єкта буде взятий за основу. Тобто побудова почнеться не з нуля. Тільки варто переконатись що такий об'єкт існує. Далі створимо якісь три вершини. Будь-які, основне - аби їх було не менше трьох, бо інакше ми не отримаємо жодної грані.
 
<source lang="python">
v1=NMesh.Vert(0,10,0)
v2=NMesh.Vert(-1,0,0)
v3=NMesh.Vert(1,0,0)
</source>
 
Потім додамо ці вершини у об'єкт.
 
<source lang="python">
obj.verts.append(v1)
obj.verts.append(v2)
obj.verts.append(v3)
</source>
 
Коли вершини створено, можна створювати грані. Починають з порожньої грані.
 
<source lang="python">
f=NMesh.Face()
</source>
 
А потім в неї додають потрібні вершини. З об'єкта. (Щоб він міг розібратись з індексами). Десь ось так:
 
<source lang="python">
f.v.append(obj.verts[0])
f.v.append(obj.verts[1])
f.v.append(obj.verts[2])
</source>
 
Після того як грань буде готова додаємо її в об'єкт.
 
<source lang="python">
obj.faces.append(f)
</source>
 
А так як наш об'єкт - трикутник, то цього достатньо. Залишилось тільки зробити так, щоб він появився у вікні блендера.
 
<source lang="python">
NMesh.PutRaw(obj,"Triangle",1)
</source>
 
Першим параметром передається об'єкт, що буде вставлятись в сцену, другим - його ім'я. Якщо ім'я унікальне - створиться новий об'єкт. Якщо ні - то той об'єкт що носив це ім'я раніше заміниться на наш новий. Тому, будьте обережні. Третій параметр - прапор, що вказує блендеру, про необхідність обчислення нормалей. Нуль - ми задали нормалі. Інакше - обчислити їх.
 
=== Карта висот ===
Тепер давайте зробимо щось поскладніше. Наприклад згенеруємо карту висот за функцією. Вони бувають доволі симпатичні:
 
[[File:MATLAB mesh sinc3D.svg|500px]]
 
== Посилання ==