Hi I'm still new to this even though I've been programming for almost 2 years, I want to create a circular entity that only has one side, like what the portal game is doing, how do I create a half sphere object?
Create a vertex
Blitz3D Forums/Blitz3D Beginners Area/Create a vertex that does not help much though, it sill gives me a full sphere but it has been flattened, I only want one side of the sphere at all
Probably not perfect for all segment levels but works with the default of 8 ...
Stevie
Stevie
Graphics3D 640,480,16,1 light = CreateLight() : RotateEntity light, 30,-45,0 camera = CreateCamera() : PositionEntity camera, 0,0,-3 ss = SEMI_SPHERE() : EntityFX ss, 4 While Not KeyDown(1) TurnEntity ss, 1,0,-1 RenderWorld() Flip Wend End ;============================================================== Function SEMI_SPHERE() temp = CreateSphere() ts = GetSurface( temp, 1 ) mesh = CreateMesh() s = CreateSurface( mesh ) For t = 0 To CountTriangles( ts ) - 1 v0 = TriangleVertex( ts, t , 0 ) v1 = TriangleVertex( ts, t , 1 ) v2 = TriangleVertex( ts, t , 2 ) If VertexY( ts, v0 ) > 0 Or VertexY( ts, v1) > 0 Or VertexY( ts, v2 ) > 0 nv0 = AddVertex( s, VertexX( ts, v0 ) , VertexY( ts, v0 ) , VertexZ( ts, v0 ) ) nv1 = AddVertex( s, VertexX( ts, v1 ) , VertexY( ts, v1 ) , VertexZ( ts, v1 ) ) nv2 = AddVertex( s, VertexX( ts, v2 ) , VertexY( ts, v2 ) , VertexZ( ts, v2 ) ) VertexNormal s, nv0, VertexNX( ts, v0 ) , VertexNY( ts, v0 ), VertexNZ( ts, v0 ) VertexNormal s, nv1, VertexNX( ts, v1 ) , VertexNY( ts, v1 ), VertexNZ( ts, v1 ) VertexNormal s, nv2, VertexNX( ts, v2 ) , VertexNY( ts, v2 ), VertexNZ( ts, v2 ) AddTriangle ( s, nv0, nv1, nv2 ) EndIf Next FreeEntity temp Return mesh End Function
that does not help much though, it sill gives me a full sphere but it has been flattened, I only want one side of the sphere at all
Eh? No it doesn't - it creates a hemisphere, which is what I thought you wanted. I think he means he wants a stretched out circle shape... or stretched out semi-circle
You could explain yourself a bit better with a picture ..
if you mean what I think you mean, It's be most productive to use a sprite with a masked texture
okay so I want a round one sided shape, that link you gave me to that code big10p takes half of the vertexes and places them on the reverse side of the other half of the sphere. but the sphere still has all it's vertexes
I need a oval shape which is one sided, so if I was behind it it would be invisible.
I need a oval shape which is one sided, so if I was behind it it would be invisible.
Try this ...
This example creates a filled circle of radius 100 :
SUN = MESHring( 0 , 100 , 7.5,7.5, 15 )
This example creates a hollow circle with inner radius of 4 and outer radius of 5 :
CURSOR = MESHring( 4,5,15,15, 30 )
Try this also ..
POINTER = MESHring( 20 , 25 , 0,5,90 )
This example creates a filled circle of radius 100 :
SUN = MESHring( 0 , 100 , 7.5,7.5, 15 )
This example creates a hollow circle with inner radius of 4 and outer radius of 5 :
CURSOR = MESHring( 4,5,15,15, 30 )
Try this also ..
POINTER = MESHring( 20 , 25 , 0,5,90 )
Function MESHring( Min# , Max#, MinA#, MaxA#, Segs = 30 ) mesh = CreateMesh() s = CreateSurface( mesh ) Closed = ( MinA = MaxA And MinA = Segs * .5 ) For a = 1 To 360 If ( a Mod segs ) = 0 If ( Not Closed ) v0 = AddVertex( s, Max * Cos( a - MaxA ) , Max * Sin( a - MaxA ) , 0 ) v1 = AddVertex( s, Max * Cos( a + MaxA ) , Max * Sin( a + MaxA ) , 0 ) v2 = AddVertex( s, Min * Cos( a + MinA ) , Min * Sin( a + MinA ) , 0 ) v3 = AddVertex( s, Min * Cos( a - MinA ) , Min * Sin( a - MinA ) , 0 ) AddTriangle s, v2, v1, v0 AddTriangle s, v0, v3, v2 Else AddVertex( s, Max * Cos( a ) , Max * Sin( a ) , 0 ) AddVertex( s, Min * Cos( a ) , Min * Sin( a ) , 0 ) EndIf EndIf Next If Closed Points = 360.0 / Segs For l = 0 To Points - 1 n = ( l + 1 ) Mod Points V0 = l * 2 V1 = V0+1 V3 = n * 2 V2 = v3 + 1 AddTriangle s, v0, v1, v2 AddTriangle s, v2, v3, v0 Next EndIf Return Mesh End Function