javascript - 使用原型(prototype)继承子类 THREE.Mesh

标签 javascript three.js

我正在尝试对 THREE.Mesh 进行子类化,如下所示( THREE.Mesh 继承自 THREE.Object3D )。

Planet = function(geometry, material) {
    THREE.Mesh.call(this);

    this.geometry = geometry;
    this.material = material;
};

Planet.prototype = Object.create(THREE.Mesh.prototype);

当我传入 SphereGeometry 时,它似乎工作正常,除了 boundRadius 属性未设置,就像我那样我们只使用了 THREE.Mesh。不过场景绘制正确。

但是,当我传入 CubeGeometry 时,渲染循环变得非常不高兴。

Uncaught TypeError: Cannot read property 'radius' of null three.min.js:105
THREE.Frustum.intersectsObject three.min.js:105
render three.min.js:414
starsgl.Application.render Application.js:60
starsgl.Application.animate Application.js:55
starsgl.Application Application.js:50
(anonymous function)

我模仿了 Three.js 使用 THREE.Mesh 子类化 THREE.Object3D 的方式。但我一定错过了一些东西。

最佳答案

由于未设置几何图形,因此未调用半径。

Planet = function(geometry, material) {
  THREE.Mesh.call(this,geometry,material);
};

Planet.prototype = Object.create(THREE.Mesh.prototype);

关于javascript - 使用原型(prototype)继承子类 THREE.Mesh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14516425/

相关文章:

javascript - 如何在 Promise 完成后调用 axios 中的数组元素

javascript - React-VR替换Pano时设置相机位置

javascript - three.js:无法使用 THREE.OBJLoader 显示 obj 文件

three.js - 如何从three.js中的OBJ+MTL文件加载纹理?

3d - 在运行时将加载的模型转换为线框 |三.js

javascript - 我需要将参数从外部函数传递到内部函数

c# - 使用 .load jquery 时执行 C# 代码

javascript - 使用 Raphael-JS 将背景图像设置为纸张

javascript - Jquery点击元素外部隐藏其他元素

javascript - 如何旋转对象并将其旋转重置为零?