Object 将一个物体分成三段装入。省道

Object 将一个物体分成三段装入。省道,object,model,three.js,dart,Object,Model,Three.js,Dart,我正在尝试使用移植的Three.JS for DART(Three.DART)并加载一个位于项目根目录中的对象文件,在根目录中我还有index.html和main.DART文件 基本上,我一直在关注在上找到的一个演示,那里没有一个用于OBJLoader类的演示,但是自从编写了这些示例之后,它已经实现了 我用来尝试加载对象的代码如下: loader=newobjloader(); load('zerling.obj')。然后((对象){ var geometry=object.geometry;

我正在尝试使用移植的Three.JS for DART(Three.DART)并加载一个位于项目根目录中的对象文件,在根目录中我还有index.html和main.DART文件

基本上,我一直在关注在上找到的一个演示,那里没有一个用于OBJLoader类的演示,但是自从编写了这些示例之后,它已经实现了

我用来尝试加载对象的代码如下:

loader=newobjloader();
load('zerling.obj')。然后((对象){
var geometry=object.geometry;
var mesh=新网格(几何体、材质);
网格位置设定值(0.0,-0.37,-0.6);
网格旋转设置值(-Math.PI/2,0.0,0.0);
网格比例设定值(2.0,2.0,2.0);
mesh.castShadow=true;
mesh.receiveShadow=true;
场景。添加(网格);
});
这个物体是一个简单的虫族。我稍后在代码中渲染场景,但它似乎不起作用

我也看过这条线。但那之后就没有运气了


对我如何继续有何评论?您是否看到加载代码中有任何问题?如果没有,我可以提供整个代码库的要点。

我没有使用三个。dart和我只是简单地看了一下您的代码,但我假设您的代码没有将后续代码链接到
。然后((..)
您需要调用异步代码

loader.load('zerling.obj')。然后((对象){
...
}).然后((x){
//这里有结果
renderer=new-WebGLRenderer(反别名:true,alpha:false);
renderer.setSize(window.innerWidth、window.innerHeight);
...
});
//这里还没有加载任何结果
当您使用异步方法(如
load
(返回未来)时,只会注册回调并执行以下代码(在
}之后)在您的情况下。当此同步线程结束时,将逐个注册已注册回调的队列

新的async/await特性使使用此类代码变得更容易

Future someFunc()异步{
//这里有结果
var object=await loader.load('zerling.obj');
var geometry=object.geometry;
var mesh=新网格(几何体、材质);
网格位置设定值(0.0,-0.37,-0.6);
网格旋转设置值(-Math.PI/2,0.0,0.0);
网格比例设定值(2.0,2.0,2.0);
mesh.castShadow=true;
mesh.receiveShadow=true;
场景。添加(网格);
}
为了能够使用此新功能,您需要一个开发频道Dart版本(1.9.0-dev…)。 使用async/await不会改变执行,它只会改变代码的外观


这对我有用<代码>对象
是一个Object3D。

什么是“不走运”呢。你会得到一个错误,没有结果,…根本没有结果。恐怕控制台中也没有错误。我在这里用剩下的代码创建了一个要点:
loader = new OBJLoader();

loader.load('zergling.obj').then((object) {

  var mesh = object;
  mesh.position.setValues(0.0, -0.37, -0.6);
  mesh.rotation.setValues(-Math.PI / 2, 0.0, 0.0);
  mesh.scale.setValues(2.0, 2.0, 2.0);

  mesh.castShadow = true;
  mesh.receiveShadow = true;
  scene.add(mesh);
});