gpt4 book ai didi

javascript - 创建自定义 Object3D 类

转载 作者:行者123 更新时间:2023-12-01 09:21:49 25 4
gpt4 key购买 nike

我是来自 AS3/Away3D 背景的 THREE.js 新手。我正在尝试创建一个自定义对象类来扩展 THREE.Object3D 以添加到我的场景中。 CustomObject 会封装很多行为属性和方法。理想情况下,我想将每个 CustomObject 传递给它自己的数据对象,这将决定它的外观/移动/行为方式。封装这段代码将使我的 main.js 更干净。

我的问题是我似乎无法将类的实例直接添加到我的场景中。我只能通过 CustomObject.getMesh() 方法添加网格。是否可以将类的实例直接添加到我的场景中进行渲染?这是我从网上和/src 中找到的内容汇总而成的一个非常基本的尝试:

function CustomObject(){

THREE.Object3D.call( this );
this.type = 'CustomObject';
this.geometry = new THREE.BoxGeometry( 540, 540, 14 );
this.mesh = new THREE.Mesh( this.geometry, new THREE.MeshLambertMaterial( { color: 0xff0000 } ) );
}

CustomObject.prototype = Object.create( THREE.Object3D.prototype );
CustomObject.prototype.constructor = THREE.Object3D;

CustomObject.prototype.getMesh = function(){

return this.mesh;

}

我希望能够将 CustomObject 类直接添加到场景中,以使对象管理更加简洁。谁能告诉我这是如何实现的吗?

提前非常感谢!

大卫

最佳答案

如果您想直接将自定义对象添加到场景中,可以使用如下模式:

function CustomObject() {

this.type = 'CustomObject';

this.geometry = new THREE.BoxGeometry( 540, 540, 14 );
this.material = new THREE.MeshLambertMaterial( { color: 0xff0000 } );

THREE.Mesh.call( this, this.geometry, this.material );

}

CustomObject.prototype = Object.create( THREE.Mesh.prototype );
CustomObject.prototype.constructor = CustomObject;

CustomObject.prototype.getMesh = function() {

return this.mesh;

}

var foo = new CustomObject();
scene.add( foo );

three.js r.71

关于javascript - 创建自定义 Object3D 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31923047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com