Problem with lights
Blitz3D Forums/Blitz3D Programming/Problem with lights
| ||
Hi, I'm trying to create a 3D maze generator and I already wrote some functions to create 2 kinds of pathways. I create a new mesh, add a surface to it. After this, I add vertexes and triangles via functions. This all works perfectly, but the mesh isn't affected by lights. I placed a light in the scene, disabled ambient light, but no lighting effect on my mesh. I even painted a brush onto my mesh, but still nothing. I added a plane beneath the mesh and this is affect by the light. How can I make my mesh light-sensitive? Graphics3D 800, 600 SetBuffer BackBuffer() plane = CreatePlane() EntityColor plane, 255, 0, 0 camera = CreateCamera() MoveEntity camera, 0, 8, 0 brush = CreateBrush(0, 255, 0) AmbientLight 0,0,0 light = CreateLight(2) MoveEntity light, 0, 15, 0 LightColor light, 255, 255, 255 Global MazeMesh = CreateMesh() Global MazeSurf = CreateSurface(MazeMesh, brush) CreateUpDown(0, 20) CreateLeftRight(0, 20) While Not KeyHit(1) If KeyDown(200) TurnEntity camera, -1, 0, 0 ; Up arrow If KeyDown(208) TurnEntity camera, 1, 0, 0 ; Down arrow If KeyDown(203) TurnEntity camera, 0, -1, 0 ; Left arrow If KeyDown(205) TurnEntity camera, 0, 1, 0 ; Right arrow If KeyDown(75) MoveEntity camera, -1, 0, 0 ; Num4 If KeyDown(77) MoveEntity camera, 1, 0, 0 ; Num6 If KeyDown(72) MoveEntity camera, 0, 0, 1 ; Num8 If KeyDown(80) MoveEntity camera, 0, 0, -1 ; Num2 RenderWorld Flip Wend Function CreateUpDown(x, z) ; Create the left wall v0 = AddVertex(MazeSurf, x - 9, 0, z - 10) v1 = AddVertex(MazeSurf, x - 9, 0, z + 10) v2 = AddVertex(MazeSurf, x - 9, 5, z - 10) v3 = AddVertex(MazeSurf, x - 9, 5, z + 10) t0 = AddTriangle(MazeSurf, v0, v2, v1) t1 = AddTriangle(MazeSurf, v1, v2, v3) ; Create the right wall v0 = AddVertex(MazeSurf, x + 9, 0, z + 10) v1 = AddVertex(MazeSurf, x + 9, 0, z - 10) v2 = AddVertex(MazeSurf, x + 9, 5, z + 10) v3 = AddVertex(MazeSurf, x + 9, 5, z - 10) t0 = AddTriangle(MazeSurf, v0, v2, v1) t1 = AddTriangle(MazeSurf, v1, v2, v3) End Function Function CreateLeftRight(x, z) ; Create the bottom wall v0 = AddVertex(MazeSurf, x - 10, 0, z - 9) v1 = AddVertex(MazeSurf, x + 10, 0, z - 9) v2 = AddVertex(MazeSurf, x - 10, 5, z - 9) v3 = AddVertex(MazeSurf, x + 10, 5, z - 9) t0 = AddTriangle(MazeSurf, v0, v1, v3) t1 = AddTriangle(MazeSurf, v0, v3, v2) ; Create the top wall v0 = AddVertex(MazeSurf, x - 10, 0, z + 9) v1 = AddVertex(MazeSurf, x + 10, 0, z + 9) v2 = AddVertex(MazeSurf, x - 10, 5, z + 9) v3 = AddVertex(MazeSurf, x + 10, 5, z + 9) t0 = AddTriangle(MazeSurf, v0, v2, v1) t1 = AddTriangle(MazeSurf, v1, v2, v3) End Function |
| ||
You need to update norms |
| ||
http://www.blitzbasic.com/b3ddocs/command.php?name=UpdateNormals&ref=3d_a-z Andy |
| ||
Oh, thanks, it works now. I've never done this before, and wanted to start with something easy (walls are just rectangular planes, merged together). Making a spaceship with Addvertex and stuff is beyond my skills right now. |
| ||
My 3D maze is coming along nicely. The entire maze (10x10 structure) is defined within the file Maze001.dat (standard txt-file, written in Notepad). The 3D model is generated via code (based on the data in the file Maze001.dat), also the UV-coords for each wall-section are applied via code. Movement: Arrow-Up and Arrow-Down: move forward and backwards. MouseX and MouseY are for turning. Keys Z and S are for moving up and down (so you can see the entire maze from high in the sky). Spacebar: toggel gravity on/off. Beware: the resolution is set to 1280x1024. The entire source-code is included in the zip-file: http://users.pandora.be/vge/downloads/Maze3DComplete.zip |