... у тебя нет развёртки ...
Пробовал создать развертку. Не помогло... Переглядел еще тучу примеров не один не работает, или я что то не так делаю или версия Blender не та. Есть ли способ просто взять для каждой вершины эту uv координату? Документацию смотрел со всех сторон везде каккието косвенно связанные параметры и функции но нет конкретного рабочего примера.
me = ob.to_mesh(scene, True, 'RENDER',calc_tessface=True)mesh_triangulate(me)me_faces = me.tessfacesme_verts = me.verticeslenverts = len(me_verts)lenfaces = len(me_faces)uv_textures = me.tessface_uv_texturesif len(uv_textures) > 0: if me.uv_textures.active and uv_textures.active.data: uv_layer = uv_textures.active.dataelse: uv_layer = Nonefor face in me_faces: if uv_layer: uv = uv_layer[face.index] uv1 = "<%.6g,%.6g>"%uv.uv1[:] uv2 = "<%.6g,%.6g>"%uv.uv2[:] uv3 = "<%.6g,%.6g>"%uv.uv3[:]
>> Но как я понимаю тут код по получению текстурных координат из полигонов. А специфика моего движка такова что мне нужна эта координата для каждой вершины в порядке их индексации.... вопрос такой - у нас есть два полигона 6 вершин и есть uv развёртка с 8 точками для этих полигонов ...... как должна выглядеть твоя таблица? ...
Цитата: sungreen от 19 Ноябрь 2016, 05:35:49>> Но как я понимаю тут код по получению текстурных координат из полигонов. А специфика моего движка такова что мне нужна эта координата для каждой вершины в порядке их индексации.... вопрос такой - у нас есть два полигона 6 вершин и есть uv развёртка с 8 точками для этих полигонов ...... как должна выглядеть твоя таблица? ... Да, видимо в Blender все так и и устроено, но в DX11 (как я понимаю) для каждой точки есть конкретная одна текстурная координата. Так как я раньше работал с Obj форматом то знаю что Blender может сохранить этот параметр так как мне надо (ведь в Obj все именно так реализовано). Пробовал в папке с аддонами найти экспортер в Obj но не нашел.
o Cubev -1.000000 -1.000000 1.000000v -1.000000 1.000000 1.000000v -1.000000 -1.000000 -1.000000v -1.000000 1.000000 -1.000000v 1.000000 -1.000000 1.000000v 1.000000 1.000000 1.000000v 1.000000 -1.000000 -1.000000v 1.000000 1.000000 -1.000000vt 0.6312 0.3438vt 0.3812 0.0939vt 0.6312 0.0939vt 0.5938 0.6563vt 0.3438 0.4064vt 0.5938 0.4064vt 0.3105 0.3542vt 0.0605 0.1043vt 0.3105 0.1043vt 0.9457 0.3626vt 0.6958 0.1126vt 0.9457 0.1126vt 0.6419 0.9294vt 0.8919 0.6794vt 0.8919 0.9294vt 0.0626 0.9335vt 0.3126 0.6836vt 0.3126 0.9335vt 0.3812 0.3438vt 0.3438 0.6563vt 0.0605 0.3542vt 0.6958 0.3626vt 0.6419 0.6794vt 0.0626 0.6836vn -1.0000 0.0000 0.0000vn 0.0000 0.0000 -1.0000vn 1.0000 0.0000 0.0000vn 0.0000 0.0000 1.0000vn 0.0000 -1.0000 0.0000vn 0.0000 1.0000 0.0000usemtl Material.001s offf 2/1/1 3/2/1 1/3/1f 4/4/2 7/5/2 3/6/2f 8/7/3 5/8/3 7/9/3f 6/10/4 1/11/4 5/12/4f 7/13/5 1/14/5 3/15/5f 4/16/6 6/17/6 8/18/6f 2/1/1 4/19/1 3/2/1f 4/4/2 8/20/2 7/5/2f 8/7/3 6/21/3 5/8/3f 6/10/4 2/22/4 1/11/4f 7/13/5 5/23/5 1/14/5f 4/16/6 2/24/6 6/17/6
Цитата: Bulbash от 18 Ноябрь 2016, 15:15:45Пробовал создать развертку. Не помогло... Переглядел еще тучу примеров не один не работает, или я что то не так делаю или версия Blender не та. Есть ли способ просто взять для каждой вершины эту uv координату? Документацию смотрел со всех сторон везде каккието косвенно связанные параметры и функции но нет конкретного рабочего примера.При созданной развёртке:Кодme = ob.to_mesh(scene, True, 'RENDER',calc_tessface=True)mesh_triangulate(me)me_faces = me.tessfacesme_verts = me.verticeslenverts = len(me_verts)lenfaces = len(me_faces)uv_textures = me.tessface_uv_texturesif len(uv_textures) > 0: if me.uv_textures.active and uv_textures.active.data: uv_layer = uv_textures.active.dataelse: uv_layer = Nonefor face in me_faces: if uv_layer: uv = uv_layer[face.index] uv1 = "<%.6g,%.6g>"%uv.uv1[:] uv2 = "<%.6g,%.6g>"%uv.uv2[:] uv3 = "<%.6g,%.6g>"%uv.uv3[:]
for face in mesh.polygons: IndexStruct[counter].append(np.int32(face.vertices[2])) IndexStruct[counter].append(np.int32(face.vertices[1])) IndexStruct[counter].append(np.int32(face.vertices[0])) for loop in face.loop_indices: for item in (ob.data.uv_layers.active.data[loop].uv if ob.data.uv_layers.active!=None else (0,0)):#uv print (item)