IrrBMAX and lights?

BlitzMax Forums/BlitzMax Programming/IrrBMAX and lights?

ckob(Posted 2005) [#1]
Hey ive been toying with IrrBMAX for a little while (thanks Gman) and its awesome ive got my mesh loaded in and started learning my way around irrlicht prety good. My question though is with the following code I cant seem to get a light to show up and shine onto this model (terrain.B3d)
Strict

Import BRL.StandardIO
Import gg.IrrBMAX

Include "B3DLoader.bmx"

Global node:T_irrISceneNode


Type MyEventReceiver Extends T_irrIEventReceiver

	Method OnEvent:Int(event:T_irrSEvent)

		If (node<>Null And event.getEventType()=EET_KEY_INPUT_EVENT And event.getKeyPressedDown()=False)
			
			Local key:Int=event.getKeyInputKey()
					
			Select key
				Case EKEY_KEY_W
					'Move Forward
					
					Return True
				Case EKEY_KEY_S
					'Move Backwards
					Return True
					
				Case EKEY_ESCAPE
					End	
					Return True
					
				Default
					Return False
			EndSelect
		EndIf

		Return False
	EndMethod

	Function generate:T_irrIEventReceiver()
		Return T_irrIEventReceiver(New MyEventReceiver)
	EndFunction
EndType

Local receiver:T_irrIEventReceiver=T_irrIEventReceiver.create(MyEventReceiver.generate)

Local device:T_irrIrrlichtDevice=T_irrIrrlichtDevice.create( ..
	EDT_DIRECT3d9, ..
	T_irrDimension2d_s32.create(1024,768), ..
	32,True,False,False,receiver)

Local driver:T_IrrIVideoDriver = device.getVideoDriver()

Local smgr:T_irrISceneManager = device.getSceneManager()

Local loader:B3DLoader = B3DLoader(B3DLoader.create(B3DLoader.generate))

smgr.AddExternalMeshLoader(T_irrIMeshLoader.createFromHandle(loader.handle))
loader.driver = driver


If device.handle=0 Then Return ' could Not create selected driver.

driver.setFog(T_irrSColor.createFromVals(0,138,125,81), True, 250, 1000, ..
	0, True)

Local light1:T_irrILightSceneNode = ..
	smgr.addLightSceneNode(Null, T_irrVector3df.createFromVals(0,30,0), ..
	T_irrSColorf.createFromRGBA(0.5, 1.0, 0.5, 0.0), 180.0)


	

Local mesh : T_irrIAnimatedMesh = smgr.getMesh("Terrain.b3d")
Local selector:T_irrITriangleSelector

If mesh.handle 
    node = smgr.addOctTreeSceneNode(mesh.getmesh(0))
End If




If node.handle
    node.setScale(T_irrvector3df.createFromVals(10,10,10))
    node.setPosition(T_irrvector3df.createFromVals(10,-10,-10))
    'node.setMaterialTexture(1,texture)
 	node.setMaterialFlag(EMF_LIGHTING,False)
 	'node.setMaterialType(EMT_LIGHTMAP)
	'node.setMaterialType(EMT_LIGHTMAP)
	node.setMaterialFlag(EMF_FOG_ENABLE, True)

selector = smgr.createOctTreeTriangleSelector(mesh.getMesh(0), node)
node.setTriangleSelector(selector)
End If


Local camera:T_irrICameraSceneNode=smgr.addCameraSceneNodeFPS(Null,100.0,20.0,-1,Null,True)
Local anim:T_irrISceneNodeAnimator=smgr.createCollisionResponseAnimator( ..
		selector, camera, T_irrVector3df.createFromVals(1,4,1), ..
		T_irrVector3df.createFromVals(0,-3,0), ..
		T_irrVector3df.createFromVals(0,4,0))
		
'camera.addAnimator(anim)
'device.getCursorControl().setVisible(False)
smgr.addCameraSceneNodeFPS(0, 100.0, 100.0)
device.getCursorControl().setVisible(False)




Local lastFPS:Int = -1
Local fps:Int=0
Local str:String=""

While(device.run())
  driver.beginScene(True, True, T_irrSColor.createFromVals(0,200,200,200))
  smgr.drawAll()
  driver.endScene()
  fps = driver.getFPS()

  If (lastFPS <> fps) Then
		str$ = "Test Stuff"
		str$ :+ driver.getName()
		str$ :+ "] FPS:"
		str$ :+ fps

		device.setWindowCaption(str$)
		lastFPS = fps
	EndIf
	Flip

Wend

device.drop()




ckob(Posted 2005) [#2]
anyone?


gman(Posted 2005) [#3]
greetings ckob :) first off, i notice you are specifically setting the lighting to off for the model material:
node.setMaterialFlag(EMF_LIGHTING,False)

try changing that False to True. next, i notice you are using a .B3D model. i think we should narrow it down to either the Irrlicht engine or the B3D loader. could you try a non-B3D model and see what happens?


ckob(Posted 2005) [#4]
Yeah it's something to do with B3d models. I loaded a 3ds and changed false to true and it worked out fine. While ive got your attention in that code how can I make the rendering distance farther? the model is getting cut off I tried using
Local camera:T_irrICameraSceneNode=smgr.addCameraSceneNodeFPS(Null,100.0,20.0,-1,Null,True)
camera.setnearvalue(1)
camera.setfarvalue(1000)



gman(Posted 2005) [#5]
i think you are doing it correctly although your #s may be a bit off. the default value for setfarvalue is 2000.0 so i would try something obscenely large like 10000.0 and see what happens.


ckob(Posted 2005) [#6]
well after testing it a little more I only have a problem with B3d for some reason.