目前我正在嘗試 Babylon.js,因?yàn)榈侥壳盀橹刮抑皇褂眠^ Threejs,并且多次向我推薦過 Babylon.js。我開發(fā)了一個(gè)回合制策略游戲,其中玩家的游戲區(qū)域由不同材料(白色、黑色、棕色)的各個(gè)區(qū)域組成。使用 Threejs,我將具有相同材質(zhì)的不同字段合并到一個(gè)對象中,將繪制調(diào)用減少到 3。我在 Babylon.js 文檔中讀到,使用實(shí)例非常簡單。這就是我以這種方式實(shí)現(xiàn)游戲場的原因:加載以 gltf/glb 格式使用攪拌機(jī)導(dǎo)出的場網(wǎng)格??寺∷?3 次以應(yīng)用 3 種不同的材料import { SceneLoader, StandardMaterial, Color3, Vector3 } from 'babylonjs';import 'babylonjs-loaders';...SceneLoader.ImportMesh('', 'models/', 'field.glb, scene, group => { group.forEach((mesh, i) => { if (mesh.name !== '__root__') { let brown = mesh.clone('FIELD_BROWN'); let brownMaterial = new StandardMaterial("brownField", scene); brownMaterial.diffuseColor = new Color3.FromHexString("#824529"); brown.material = brownMaterial; brown.isVisible = false; let black = mesh.clone('FIELD_BLACK'); let blackMaterial = new StandardMaterial("blackField", scene); blackMaterial.diffuseColor = new Color3.FromHexString("#3E211B"); black.material = blackMaterial; black.isVisible = false; mesh.name = 'FIELD_WHITE'; let whiteMaterial = new StandardMaterial("whiteField", scene); whiteMaterial.diffuseColor = new Color3.FromHexString("#F8DBAF"); mesh.material = whiteMaterial; mesh.isVisible = false; } else { mesh.isVisible = false; } });});在另一個(gè)函數(shù)中構(gòu)建游戲場import { Vector3, Color3 } from 'babylonjs';...playerField.grid.forEach((cell, i) => { let pivot; });生成的場景如下所示:當(dāng)我調(diào)整窗口大小時(shí),所有棕色和黑色字段都消失了。我也在控制臺中看到了這個(gè)警告(256 次):[.WebGL-0x7fe20b9b3400]GL 錯(cuò)誤:GL_INVALID_OPERATION:glDrawElementsInstancedANGLE:嘗試訪問屬性 4 中超出范圍的頂點(diǎn)我是否使用了錯(cuò)誤的概念,或者我是否對使用 Babylon.js 的工作方式有錯(cuò)誤的心理模型?我認(rèn)為這可能是渲染奧德的問題,但我對警告和消失的字段感到非常困惑。感謝您的任何幫助!
Babylon.js:實(shí)例的渲染順序
繁華開滿天機(jī)
2021-06-29 09:08:36