While playing with shaders, I noticed that light positions seem to not be working correctly. To test, I create a sphere and parent it to the light so that I can always see its position. The light is parented to a pivot at the origin and I just turn that pivot on every frame. The effect of the light on the cylinder in the middle is on the opposite side. What the...?
If I'm crazy or just doing something stupid, please let me know!
Btw, does anyone know how to hide the pointer? HidePointer is not supported in MiniB3D.
If I'm crazy or just doing something stupid, please let me know!
Btw, does anyone know how to hide the pointer? HidePointer is not supported in MiniB3D.
SuperStrict Framework BRL.FileSystem Import "../minib3d.bmx" 'Import klepto.minib3d Local width:Int = 1024, height:Int = 768 Local depth:Int = 32, mode:Int = 2 Graphics3D width, height, depth, mode ' set environment AmbientLight(0,0,(0.2 * 255)) 'HidePointer() ' create camera Local cam:TCamera = CreateCamera() PositionEntity cam, 0, 10, -50 CameraRange( cam, .1, 200000 ) SetCameraFOV( cam, 72 ) ' create pivot point Local piv:TPivot = CreatePivot() ' create light Local light:TLight = CreateLight(0) EntityParent light, piv light.LightColor( 255, 55, 55 ) ' create mesh for light Local LDummy:TMesh = CreateSphere( 16, light ) ScaleEntity( LDummy, 10, 10, 10 ) ' moving light and mesh should follow PositionEntity( light, 0, -100, 155 ) ' create cylinder Local ent:TMesh = CreateCylinder( 12 ) ScaleEntity( ent, 20, 100, 20 ) ' used by camera code Local mxs# = 0 Local mys# = 0 Local move# = 5.0 MouseXSpeed() ' flush MouseYSpeed() ' flush ' used by fps code Local old_ms:Int = MilliSecs() Local renders:Int Local fps:Int = 10 Local anim_time:Float = 0 ' main loop While Not KeyDown( KEY_ESCAPE ) ' mouse look mxs# = mxs# + ( MouseXSpeed() / 5.0 ) mys# = mys# + ( MouseYSpeed() / 5.0 ) RotateEntity cam, mys#, -mxs#, 0 MoveMouse width / 2, height / 2 MouseXSpeed() ' flush MouseYSpeed() ' flush ' move camera forwards/backwards/left/right with cursor keys If KeyDown( KEY_UP ) = True Then MoveEntity cam, 0, 0, move# ' move camera forward If KeyDown( KEY_DOWN ) = True Then MoveEntity cam, 0, 0, -move# ' move camera back If KeyDown( KEY_LEFT ) = True Then MoveEntity cam, -move#, 0, 0 ' move camera left If KeyDown( KEY_RIGHT ) = True Then MoveEntity cam , move# , 0 , 0 ' move camera right TurnEntity piv, 0, -0.5, 0 UpdateWorld RenderWorld renders = renders + 1 ' calculate fps If MilliSecs() - old_ms >= 1000 old_ms=MilliSecs() fps=renders renders=0 EndIf Text 0, 20, "FPS: " + String( fps ) Text 0, 40, "Light : " + EntityX( Light, True ) + " : " + EntityY( Light, True ) + " : " + EntityZ( Light, True ) Flip( True ) Wend Function SetCameraFOV ( cam:TCamera, FOV:Float ) CameraZoom cam, 1.0 / Tan( FOV# / 2.0 ) End Function