当我使用draco在AFRAME.registerComponent中的aframe中显示glf模型(在搅拌器中压缩)时,我得到了一个错误“对象不是AFRAME.registerComponent的实例”
我之所以重写gltf模型,是因为我正在sveltekit中开发我的项目,以避免服务器端呈现,提前感谢。
<a-scene>
<a-entity id="el_model" comp-gltf-model="url(https://t9omiq.csb.app/tree_compressed.glb)" scale="0.028 0.028 0.028" position="-2 -1 -5"></a-entity>
</a-scene>JS文件
AFRAME.registerComponent("comp-gltf-model", {
schema: { type: 'model' },
init: function() {
const loader = new GLTFLoader().setCrossOrigin('anonymous')
.setDRACOLoader(new DRACOLoader().setDecoderPath('https://www.gstatic.com/draco/v1/decoders/'))
// .setKTX2Loader(new KTX2Loader().detectSupport(renderer));
let src = this.data;
let self = this;
let el = this.el;
// Loading glf
loader.load(src, function gltfLoaded (gltfModel) {
self.model = gltfModel.scene || gltfModel.scenes[0];
console.log("self.model", self.model)
var modelObj = self.model.modelObj;
el.setObject3D('mesh', modelObj);
// el.emit('model-loaded', {format: 'gltf', model: self.model});
}, undefined /* onProgress */, function gltfFailed (error) {
var message = (error && error.message) ? error.message : 'Failed to load glTF model';
// warn(message);
// el.emit('model-error', {format: 'gltf', src: src});
});
},
update: function() {
}
})console.log("self.model",self.model)
Object { uuid: "D93E28D5-311A-4D92-978C-2132D9ECDB86", name: "tree", type: "Group", parent: null, children: (2) […], up: {…}, position: {…}, rotation: {…}, quaternion: {…}, scale: {…}, … }
message: `Entity.setObject3D` was called with an object that was not an instance of THREE.Object3D.发布于 2022-06-27 09:22:50
问题解决了。首先,我将模型添加到新的THREE.Object3D()中,但是,我发现了另一个错误"Uncaught : material.onBeforeRender不是一个函数“,这是由于three.js版本不同。。。现在一切都好
发布于 2022-06-24 19:52:44
A帧gltf模型中的等效码是:
self.model = gltfModel.scene || gltfModel.scenes[0];
el.setObject3D('mesh', self.model);从这一行(以及控制台输出)可以看出,self.model是一个Object3D:
console.log("self.model", self.model)据我所知,Object3D没有属性modelObj,因此self.model.modelObj将是未定义的。
我认为你只需要替换这句话:
var modelObj = self.model.modelObj;在这方面:
var modelObj = self.model;你的代码很可能会起作用。
https://stackoverflow.com/questions/72683852
复制相似问题