从 ThreeJS 的 DracoLoader 获取他的网格
Get he mesh from the DracoLoader of ThreeJS
我在 ThreeJS 的 Draco 加载器上工作,但遇到加载器问题。我实际上需要 dracofile 加载的网格,但在我使用此代码加载网格后网格不可用:
let mesh;
const loader = new DRACOLoader();
loader.setDecoderPath('./Three/examples/js/libs/draco/')
loader.load('PATHTO drc file', function(geometry) {
var material = new THREE.PointsMaterial({ size: 0.05 });
material.vertexColors = false
mesh = new THREE.Points(geometry, material);
mesh.position.set(0, 0, -1);
});
console.log(mesh) // print undifined
我需要网格来执行一些操作,你有解决这个问题的线索吗?
加载回调是异步运行的,因此紧随其后的行先运行,然后才定义网格。有很多方法可以管理异步编程(我建议 https://eloquentjavascript.net/11_async.html 作为介绍)但是在这种情况下一个简单的解决方案是将后面的代码放入回调中:
let mesh;
...
loader.load('...', (geometry) => {
mesh = ...
start();
});
...
function start() {
console.log(mesh);
}
我在 ThreeJS 的 Draco 加载器上工作,但遇到加载器问题。我实际上需要 dracofile 加载的网格,但在我使用此代码加载网格后网格不可用:
let mesh;
const loader = new DRACOLoader();
loader.setDecoderPath('./Three/examples/js/libs/draco/')
loader.load('PATHTO drc file', function(geometry) {
var material = new THREE.PointsMaterial({ size: 0.05 });
material.vertexColors = false
mesh = new THREE.Points(geometry, material);
mesh.position.set(0, 0, -1);
});
console.log(mesh) // print undifined
我需要网格来执行一些操作,你有解决这个问题的线索吗?
加载回调是异步运行的,因此紧随其后的行先运行,然后才定义网格。有很多方法可以管理异步编程(我建议 https://eloquentjavascript.net/11_async.html 作为介绍)但是在这种情况下一个简单的解决方案是将后面的代码放入回调中:
let mesh;
...
loader.load('...', (geometry) => {
mesh = ...
start();
});
...
function start() {
console.log(mesh);
}