Render.ru

Импорт моделей, проблема с развёрткой.

Душелов

Активный участник
Рейтинг
11
#1
имеется скрипт для импорта моделей формата IMD в макс. Это модели из игры. К самим моделям притензий нет, экспортируются правильно, но вот координаты текстурных развёрток экспортируются не правильно. Если применить анврап и посмотреть что в нем творится. то все точки лежат в одной и той же координате, их не возможно увеличить. Возможно проблема в создании модельки через макс скрипт? вот что там написано

Я создавал так:
mesh name:("OBJ") vertices:vert faces:face material:material tverts:tvert
Как видишь, я при этом передавал координаты вершин, список вершин, материал и текстурные координаты.
Читал координаты так:
local x,y,z,u,v
x = ReadFloat bstream
y = ReadFloat bstream
z = ReadFloat bstream
u = ReadFloat bstream
v = 1 - ReadFloat bstream -- Здесь координаты перевернуты...
append points (IMD_point x:x y:y z:z u:u v:v)

Т.е. текстурные координаты читаются

А потом создавал массив текстурных координат так:
x=gvtx[j].points.u
y=gvtx[j].points.v
z=0
append tvert ([x,y,z])

Тут только последняя координата нулевая - z

ну это с пояснениями)

Интересует макс 9 или 2010
 

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
#2
Сейчас так не работает
Код:
The optional tverts array feature is currently broken. The texture vertices are set correctly, but no texture faces are built internally. Until this gets fixed, you can work around by building the texture faces yourself:
 

WORKAROUND EXAMPLE:

mnode = mesh vertices:#([0,0,0],[10,0,0],[0,10,0],[10,10,0]) tverts:#([0,0,0],[10,0,0],[0,10,0],[10,10,0]) faces:#([1,2,3],[2,4,3])
mmesh = mnode.mesh
buildTVFaces mmesh 
for i = 1 to mmesh.numfaces do (setTVFace mmesh i (getFace mmesh i))
PS
Умористы они конечно.
 

megavitus

Активный участник
Рейтинг
7
#3
Вот работающий кусочек аналогичного импортёра из бинарного формата, полученный после плясок с бубном.

Код:
--build mesh
mm = mesh vertices:arrv faces:arrf
--set UV
setNumTVerts mm numtvert
for i = 1 to numtvert do (setTVert mm i arrtv[i])
buildTVFaces mm false
for i = 1 to numfaces do (setTVFace mm i arrf[i])
Здесь
arrv -массив вершин
arrf -массив фейсов
arrtv -массив текстурных вершин
numtvert - количество текстурных вершин
numfaces - количество фейсов
 
Сверху