Publié : ven. 03/juil./2009 13:15
CPLBator> Tes images sont super jolies; toi et TMyke faites vraiment des miracles!
C'est le moins que l'on puisse dire. Le screen ci-dessus, je vais le mettre dans la galerie duCpl.Bator a écrit :ca commence vraiment à claqué !
Code : Tout sélectionner
Procedure.i lm_process_mesh(*node.IMesh)
*copy = iCreateEmptyMesh()
*buf = iAddBufferMesh(*copy,1)
*meshbuf.IMeshBuffer = iMeshGeometry(*node)
num.l = iMeshBufferPolyCount.l(*meshbuf)
Protected v0.l, v1.l, v2.l
Protected vert_a.VECTOR3,vert_b.VECTOR3,vert_c.VECTOR3,normal.VECTOR3
Protected uv_a.VECTOR2,uv_b.VECTOR2,uv_c.VECTOR2
For i = 0 To num-1
iMeshBufferFace(*meshbuf, i, @v0, @v1, @v2)
; récupère chaqu'un des 3 vertex,normal,uv
iMeshBufferVertex(*meshbuf, @vert_a, v0)
iMeshBufferVertex(*meshbuf, @vert_b, v1)
iMeshBufferVertex(*meshbuf, @vert_c, v2)
iMeshBufferTexCoord(*meshbuf,@uv_a,v0)
iMeshBufferTexCoord(*meshbuf,@uv_b,v1)
iMeshBufferTexCoord(*meshbuf,@uv_c,v2)
; On replace les vertice dans le mesh vide
v1.l= iAddVertexMesh.l(*copy, vert_a\x, vert_a\y,vert_a\z, $FFFFFFFF,uv_a\x,uv_a\y)
v2.l= iAddVertexMesh.l(*copy, vert_b\x, vert_b\y,vert_b\z, $FFFFFFFF,uv_b\x,uv_b\y)
v3.l= iAddVertexMesh.l(*copy, vert_c\x, vert_c\y,vert_c\z, $FFFFFFFF,uv_c\x,uv_c\y)
iAddFaceMesh(*copy, v1,v2,v3,0)
Next
iFreeNode(*node)
*node = *copy
ProcedureReturn *node
EndProcedure
Code : Tout sélectionner
Procedure.i lm_process_mesh(*node.IMesh)
Protected v0.l, v1.l, v2.l, v3.l
Protected vert_a.VECTOR3,vert_b.VECTOR3,vert_c.VECTOR3, normal.VECTOR3
Protected vert1.S3DVertex2TCoords, vert2.S3DVertex2TCoords, vert3.S3DVertex2TCoords
Protected Dim uv_a.f(3)
Protected Dim uv_b.f(3)
Protected Dim uv_c.f(3)
*copy.IMMesh = iCreateEmptyMesh()
iAddBufferMesh(*copy,1)
*meshbuf.IMeshBuffer = iMeshGeometry(*node)
num.l = iMeshBufferPolyCount.l(*meshbuf)
; For i = 0 To num-1
;
; iMeshBufferFace(*meshbuf, i, @v0, @v1, @v2)
;
; ; récupère chaqu'un des 3 vertex,normal,uv
; iMeshBufferVertex(*meshbuf, @vert_a\x, v0)
; iMeshBufferVertex(*meshbuf, @vert_b\x, v1)
; iMeshBufferVertex(*meshbuf, @vert_c\x, v2)
;
; iMeshBufferTexCoord(*meshbuf,@uv_a(0),v0)
; iMeshBufferTexCoord(*meshbuf,@uv_b(0),v1)
; iMeshBufferTexCoord(*meshbuf,@uv_c(0),v2)
;
; ; On replace les vertice dans le mesh vide
; v1.l= iAddVertexMesh(*copy, vert_a\x, vert_a\y,vert_a\z, $FFFFFFFF, uv_a(0), uv_a(1))
; v2.l= iAddVertexMesh(*copy, vert_b\x, vert_b\y,vert_b\z, $FFFFFFFF, uv_b(0), uv_b(1))
; v3.l= iAddVertexMesh(*copy, vert_c\x, vert_c\y,vert_c\z, $FFFFFFFF, uv_c(0), uv_c(1))
; ; répercute les UV du layer 0 sur le layer 1
; iTexCoord2MeshBuffer( iMeshGeometry(*copy) , uv_a(2), uv_a(3), v1)
; iTexCoord2MeshBuffer( iMeshGeometry(*copy) , uv_b(2), uv_b(3), v2)
; iTexCoord2MeshBuffer( iMeshGeometry(*copy) , uv_c(2), uv_c(3), v3)
;
; iAddFaceMesh(*copy, v1,v2,v3, 0)
;
; Next
; << OU >>
For i = 0 To num-1
iMeshBufferFace(*meshbuf, i, @v0, @v1, @v2)
iMeshBufferGetVertex(*meshbuf, @vert1, v0)
iMeshBufferGetVertex(*meshbuf, @vert2, v1)
iMeshBufferGetVertex(*meshbuf, @vert3, v2)
v0=iAddCVertexMesh.l(*copy, @vert1)
v1=iAddCVertexMesh.l(*copy, @vert2)
v2=iAddCVertexMesh.l(*copy, @vert3)
iAddFaceMesh(*copy, v0,v1,v2, 0)
Next
num_mat.l = iNodeNumMaterial.l(*node)
For i = 0 To num_mat-1
*src.IMaterial = iNodeMaterial(*node, i)
*dest.IMaterial = iNodeMaterial(*copy, i)
iCopyMaterial( *src, *dest)
Next
iFreeNode(*node)
*node = *copy
ProcedureReturn *node
EndProcedure