how to define UV for the following situation?
Blitz3D Forums/Blitz3D Programming/how to define UV for the following situation?
| ||
hi i made a simple ramp with 6 vertex and 8 tris, but didn't found a way to define uv's for them. I redifine the ramp with 12 vertex and 8 tris. Redefining the same vertex with different uv to better suit a texture. is there a more intelligent, tricky aproach? following is a sample code. Graphics3D 800,600 Cam = CreateCamera() PositionEntity Cam, 0,0,-5 Light = CreateLight() Mesh1 = CreateRamp1() Mesh2 = CreateRamp2() MoveEntity Mesh1,-2,0,0 MoveEntity Mesh2, 2,0,0 EntityTexture Mesh1, CreateTexture1() EntityTexture Mesh2, CreateTexture1() While Not KeyHit(1) RenderWorld TurnEntity Mesh1,1, 1, 0 TurnEntity Mesh2,1, 1, 0 Flip Wend Function CreateRamp1() ;first version 6 Verts, 8 Tris Local Mesh, Surface, VertexA,VertexB, VertexC, VertexD, VertexE, VertexF Local Triangle1, Triangle2, Triangle3, Triangle4 Local Triangle5, Triangle6, Triangle7, Triangle8 Mesh=CreateMesh() Surface=CreateSurface(Mesh) VertexA = AddVertex (Surface , 1 , -1, 1, 0, 1) VertexB = AddVertex (Surface , 1 , -1, -1, 1, 1) VertexC = AddVertex (Surface ,-1 , -1, -1, 0, 1) VertexD = AddVertex (Surface ,-1 , -1, 1, 1, 1) VertexE = AddVertex (Surface , 1 , 1, 1, 1, 0) VertexF = AddVertex (Surface ,-1 , 1, 1, 0, 0) ; E ; /\ ; F/| \ ; |\| \ ; | \ A \ B ; | |\___\ ; |/ \ / ; |____\/ ; D C Triangle1=AddTriangle(Surface,VertexA,VertexC,VertexB) Triangle2=AddTriangle(Surface,VertexA,VertexD,VertexC) Triangle3=AddTriangle(Surface,VertexA,VertexB,VertexE) Triangle4=AddTriangle(Surface,VertexA,VertexE,VertexF) Triangle5=AddTriangle(Surface,VertexF,VertexE,VertexB) Triangle6=AddTriangle(Surface,VertexF,VertexB,VertexC) Triangle7=AddTriangle(Surface,VertexF,VertexC,VertexD) Triangle8=AddTriangle(Surface,VertexF,VertexD,VertexA) UpdateNormals Mesh Return Mesh End Function Function CreateRamp2() ;Second version, 12 Verts, 8 tris Local Mesh, Surface, VertexA,VertexB, VertexC, VertexD, VertexE, VertexF Local Triangle1, Triangle2, Triangle3, Triangle4 Local Triangle5, Triangle6, Triangle7, Triangle8 Mesh=CreateMesh() Surface=CreateSurface(Mesh) VertexA = AddVertex (Surface , 1 , -1, 1, 0, 0) VertexB = AddVertex (Surface , 1 , -1, -1, 1, 0) VertexC = AddVertex (Surface ,-1 , -1, -1, 1, 1) VertexD = AddVertex (Surface ,-1 , -1, 1, 0, 1) VertexE = AddVertex (Surface , 1 , 1, 1, 1, 0) VertexF = AddVertex (Surface ,-1 , 1, 1, 1, 1) ; E ; /\ ; F/| \ ; |\| \ ; | \ A \ B ; | |\___\ ; |/ \ / ; |____\/ ; D C Triangle1=AddTriangle(Surface,VertexA,VertexC,VertexB) Triangle2=AddTriangle(Surface,VertexA,VertexD,VertexC) Triangle3=AddTriangle(Surface,VertexA,VertexE,VertexF) Triangle4=AddTriangle(Surface,VertexA,VertexF,VertexD) VertexF = AddVertex (Surface ,-1 , 1, 1, 0, 0) VertexE = AddVertex (Surface , 1 , 1, 1, 1, 0) VertexC = AddVertex (Surface ,-1 , -1, -1, 0, 1) VertexB = AddVertex (Surface , 1 , -1, -1, 1, 1) VertexA = AddVertex (Surface , 1 , -1, 1, 0, 0) VertexD = AddVertex (Surface ,-1 , -1, 1, 1, 0) Triangle1=AddTriangle(Surface,VertexF,VertexB,VertexC) Triangle2=AddTriangle(Surface,VertexF,VertexE,VertexB) Triangle3=AddTriangle(Surface,VertexF,VertexC,VertexD) Triangle4=AddTriangle(Surface,VertexA,VertexB,VertexE) UpdateNormals Mesh Return Mesh End Function Function CreateTexture1() For i = 0 To 256/32+1 For j = 0 To 256/32+1 c = (i + j) Mod 2 * 255 Color c, c, c Rect i * 32, j * 32, 32, 32 Next Next tex = CreateTexture(256, 256, 1+8) CopyRect 0, 0, 256, 256, 0, 0, BackBuffer(), TextureBuffer(tex) Color 255,255,255 Return tex End Function thank's in advance Juan |
| ||
For that, you'll need a little trigonometry; I'm cream-crackered right now, so I can't just work the math out for you, but basically, you need Sin()[b] and [b]Cos() to accurately map the UV of the vertices on the ramp's slope. Have a look at the Sin()/Cos() example in the help docs, that should get you going. |
| ||
Starfox's unweld function (second function in the code I quote in the post linked below) might be of use to you? http://www.blitzbasic.com/Community/posts.php?topic=92901#1064448 |
| ||
hi, thank's i just ask about a simple way of defining uv for this shape, if a simple one exist. i thought that there were no need for a uv mapping software, probably one knows a way of do it simply. Reordering the tris definition may be or some thing not so obvious at first. in the second Ramp definition i manually unweld part of the shape, duplicating vertex and so, reaching the posibility of define diferent uv coords for different vertex placed in the same point of the 3d space. i just thought that being the shape so simple, there would be a simple way for doing it and i was overcomplicating the thing! Juan |