【发布时间】:2015-06-17 05:22:48
【问题描述】:
所以我尝试使用 InteractiveMesh 的 ColModelImporterJFX 将 collada .dae 文件导入 Javafx 场景。
我已经从 jar 工作中导入模型并将其渲染到场景中,但是没有任何关于将 PhongMaterials 添加到返回的 MeshViews 的有用文档。
ColModelImporter station = new ColModelImporter();
station.setResourceBaseUrl(ClassLoader.getSystemResource("models/Station"));
station.read(ClassLoader.getSystemResource("models/station.dae"));
返回的节点数组中唯一的节点似乎是一个包含所有节点的组。
Group model = (Group)(station.getImport()[0]);
root.getChildren().addAll(model);
我所知道的是,getNamedMaterials() 方法会返回一个材质图,但不知道如何实际应用它们。
Map<String, PhongMaterial> tex = station.getNamedMaterials();
虽然我确实找到了一种将材质分别应用到每个 MeshView 的方法(组模型包含另一个包含所有 MeshView 节点的组),但它对我一点帮助都没有,因为我无法知道哪种材质使用哪个 MeshView。
for (int i = 0; i < ((Group) model.getChildren().get(0)).getChildren().size(); i++) {
((MeshView) ((Group) model.getChildren().get(0)).getChildren().get(i)).setMaterial(somematerial);
}
我确实使用 ModelBrowserJFX 试用了我的 3D 模型,它可以正常工作。
我们将不胜感激。
【问题讨论】:
-
你试过不应用材料吗?不同的网格视图应该已经应用了它们的材料。这就是为什么您使用模型浏览器可以很好地看到它们的原因。
-
是的,全是白色的:/
-
也许是因为光线。你有应用一些灯吗?我刚刚在 InteractiveMesh 上尝试过 collada 示例,我不必添加材质。
-
这确实让我想到纹理的位置可能不正确......我怀疑 getResourceBaseUrl 做了很多。
-
是的,我有灯光,还有很多在场景中具有纹理(基元)的对象,这样肯定可以工作
标签: 3d textures javafx-8 collada