在 obj 文件或编辑文件中选择特定网格



我在这里买了一个 3d 网格包,但我对如何逐个加载这个包中的对象感到困惑。我用这个将它们加载到我的巴比伦游戏中:

BABYLON.SceneLoader.ImportMesh("", "./", "./resources/objects/house pack.obj", scene, function (newMeshes) { } )

但它加载了整个网格,就像上面链接的第一个屏幕截图一样。抱歉,有点使用网格的菜鸟,但我可以单独在其中加载子网格吗?还是一次全部,但有某种方法可以从另一个解析一个?如果没有,知道如何轻松编辑网格以为每个网格创建单独的文件吗?我尝试了meshlab,但它不断崩溃并且行为怪异。

假设输入的obj文件是按组组织的,SceneLoader.ImportMesh从文件中加载网格并将它们附加到场景中。第一个参数可以设置为 null 以加载所有网格,也可以给出您感兴趣的网格列表

BABYLON.SceneLoader.ImportMesh(["chair1", "desk1"], "./", "./resources/objects/house pack.obj", scene, function (newMeshes) 
{
// do something with the meshes
var meshes = newmeshes.meshes;
var materials = newMeshes.materials;
});

您需要知道集合内部的网格列表,在您的资产手册中列出或使用编辑器读取 house pack.obj 文件。

此外,您可以改用 SceneLoader.LoadAssetContainer 从文件加载所有资源,直到稍后才将它们追加到场景中。

BABYLON.SceneLoader.LoadAssetContainer("./", "house pack.obj", scene, function (container) {
var meshes = container.meshes;
var materials = container.materials;
//...
// Adds all elements to the scene
container.addAllToScene();
});

最新更新