JMonkeyEngine3第二天筆記

1. 場景物體的組成

所有放到3D場景中的物體都是一個Spatial,Spatial有兩種類型:Geometry和Node

Geometry(幾何體)描述的是物體的外觀,是我們能夠看到的;Node描述的是物體的組合,將幾何體關聯起來,是不可見的。

每個JME應用都有一個根節點rootNode,繼承了SimpleApplication則自動繼承了該對象,每個要渲染的物體都要附加在這個rootNode上。

移動一個Node,則附加在其上的Geometry、子Node、子Node的Geometry都跟着移動

操作:

創建:new

移動:move

附加:attachChild

移除附加:detachChild

旋轉:rotate

配置用戶自定義數據到渲染物體上:

pivot.setUserData("pivot id",42 )

int id = pivot.getUserData( "pivot id" );

2. 資源Assets管理

assets包括模型、材料、紋理、場景、顏色、聲音、字體等。

默認的文件存放方式是,將文件存放在類路徑classpath下的assets文件夾下;也可以自定義資源存放的位置:assetManager.registerLocator("myAssets", FileLocator.class); “myAssets”是項目下的一個普通文件夾,可選ClasspathLocator, ZipLocator, FileLocator, HttpZipLocator, 和 UrlLocator方式。

可以使用JME SDk或者Blender(導出爲ogre xml)來創建模型和場景。但XML/OBJ文件只有在開發階段可用,發佈時使用JME優化的.j3o格式文件,可以在JME SDK裏進行轉換:文件右鍵-》convert to jme3 binary

使用assetManager.loadModel加載資源文件。

Spatial scene = assetManager.loadModel("Scenes/town/main.j3o");
rootNode.attachChild(scene);

 

3. 每幀刷新

重寫SimpleApplication的simpleUpdate方法,在SimpleInit方法執行後將重複執行simpleUpdate方法,每次update都自動重繪屏幕。

tpf:time per frame,即每秒的幀數

經驗編程指導:

1)把simpleInit裏的代碼移到AppStates.

2)把simpleUpdate的代碼移到Custom Controls.

 

4. 出現的問題

1)在運行JME應用時,總會先彈出屬性配置窗口,想把這個窗口去掉:app.setDisplayStatView(false);

2)遊戲窗口鼠標自動關聯攝像頭,想把這個去掉:flyCam.setEnabled(false);

3)希望去掉遊戲窗口左下角的幀信息:app.setDisplayFps(false);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章