forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Координаты вертексов при програмном копировании меша (http://forum.boolean.name/showthread.php?t=13867)

CRASHER 10.12.2010 13:00

Координаты вертексов при програмном копировании меша
 
Нужно правильно расставить UV-координаты и нормали. Начудил код копирования меша, а координаты вертексов и нормали расставляются верно, но не везде. Полюбому уже тема такая созданна, если кто то знает о ней, дайте ссыль.

SBJoker 10.12.2010 13:07

Ответ: Координаты вертексов при програмном копировании меша
 
Получай UV координаты и нормали встроенными средствами и переноси их в новый меш.

CRASHER 10.12.2010 14:20

Ответ: Координаты вертексов при програмном копировании меша
 
Спасибо конечно, но ты мне ничего нового не сообщил. Понятное дело я беру uv из вертыкса который копирую и добавляю в новый. Но если ты картинку смотрел, там искаженные uv.

SBJoker 10.12.2010 14:56

Ответ: Координаты вертексов при програмном копировании меша
 
Цитата:

Сообщение от CRASHER (Сообщение 171538)
Но если ты картинку смотрел, там искаженные uv.

Ну так не искажай их, и не путай местами!

CRASHER 11.12.2010 00:05

Ответ: Координаты вертексов при програмном копировании меша
 
Хорошо, поставлю вопрос по другому. Как правильно скопировать мешь учитывая нормали и UV координаты?

tormoz 11.12.2010 01:47

Ответ: Координаты вертексов при програмном копировании меша
 
Код:

;-------------------------------------------------       
 msurfs=CountSurfaces(entity)
 For is=1 To msurfs
       
        surf=GetSurface(entity,is)                    ; surf object
        ;update the virtual mesh
        e\numverts[is]=CountVertices(surf)            ;count vertexs surf
        e\numtris[is]=CountTriangles(surf)
       
        br=GetSurfaceBrush(surf)
    layer_amtsurf=FindSurface(layer_amt,br)
        If layer_amtsurf=0 
              layer_amtsurf=CreateSurface(layer_amt,br) ;esli net to sozdat  surface
          EndIf
    FreeBrush br       

        e\layer_amtsurf[is]=layer_amtsurf                  ; surf new object
               
        e\vertindex[is]=CountVertices(layer_amtsurf)  ;count vertexs surface_amt       
        e\trisindex[is]=CountTriangles(layer_amtsurf)    ;count Triangles surface_amt       
       
          l\countVert=l\countVert+e\vertindex[is]
       
        ;add data to layer_amt + virtual mesh
        For i=0 To CountVertices(surf)-1
                AddVertex(layer_amtsurf,VertexX(surf,i)+e\x,VertexY(surf,i)+e\y,VertexZ(surf,i)+e\z,VertexU(surf,i),VertexV(surf,i),VertexW(surf,i))
                VertexNormal layer_amtsurf,i+e\vertindex[is],VertexNX(surf,i),VertexNY(surf,i),VertexNZ(surf,i)
                r#=VertexRed# (surf,i)
                g#=VertexGreen# (surf,i)
                b#=VertexBlue# (surf,i)
                VertexColor layer_amtsurf,i+e\vertindex[is],VertexRed# (surf,i),VertexGreen# (surf,i),VertexBlue# (surf,i)
        Next
               
        For it=0 To CountTriangles(surf)-1
                i2=e\vertindex[is];
                AddTriangle(layer_amtsurf,TriangleVertex(surf,it,0)+i2,TriangleVertex(surf,it,1)+i2,TriangleVertex(surf,it,2)+i2)
        Next
Next

Тут добавление к уже созданному мешу так что разбирайся

создай меш и убери смещения при добавлении вертекс и трианглов

CRASHER 11.12.2010 02:30

Ответ: Координаты вертексов при програмном копировании меша
 
Спсыбы, Разобрался таки))) Благодарю! очень полезно!!!

CRASHER 12.12.2010 12:43

Ответ: Координаты вертексов при програмном копировании меша
 
Появился еще один вопорс. Я создал в новом меше новую точку, нашел наконецтаки UV для новой точки. Применил к ней эти UV. Но почему то текститса только один трианг более мение. Остальные как на фотоке в первом посте. Использовал UpdateNormals и Vertextexcoords после обновления нормалей. Как должен выглядеть процесс применения текстурных координат для новой точки?

SBJoker 12.12.2010 13:18

Ответ: Координаты вертексов при програмном копировании меша
 
Твоя проблема в том что ты считаешь что у трианглов есть общие точки. Прикинь у нескольких трианглов одна вершина с единственным UV набором? Так ни когда ни чего не затекстуришь. Делай каждому трианглу по три своих личных вершины и будет тебе щастье.

CRASHER 12.12.2010 15:02

Ответ: Координаты вертексов при програмном копировании меша
 
SBJoker, я догадывался. Подскажи как выиглядит код с добавлением вершины.
Или может знаешь где можно посмотреть?


Часовой пояс GMT +4, время: 08:06.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot