fan*_*han 5 javascript three.js
我正在尝试制作一个小型“引擎”,使我能够使用 Three.js 轻松创建和定位对象。到目前为止,我已经能够设置场景、渲染器和相机,一切似乎都工作正常,直到我尝试渲染立方体并将其附加到场景中。
我能够创建立方体并将其附加到我的场景中,但是当我尝试在 Three.js 中使用 render() 函数时,我的代码似乎失败并收到错误:
THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.
Run Code Online (Sandbox Code Playgroud)
但我不太确定为什么。我在网上找不到太多关于此错误的信息,所以我希望这里有人能指出我正确的方向。
在进行故障排除时,我尝试将多维数据集输出到控制台,看看是否可以从中获取任何有用的信息。看起来它很好地附着在我的场景上,并且我的场景和相机都显示为立方体的父对象。
这是代码:
function spnScene(alias, fov, x, y, z) {
window.spnCreateScene = new THREE.Scene();
var WIDTH = window.innerWidth, HEIGHT = window.innerHeight;
if (alias == false) {
console.warn('spnRenderer scene antialias set to ' + alias + ". Please check your code to make sure it's correct.");
}
spnRenderer = new THREE.WebGLRenderer({
antialias: alias
});
spnRenderer.setSize(WIDTH, HEIGHT);
document.body.appendChild(spnRenderer.domElement);
// create camera
spnCamera = new THREE.PerspectiveCamera(fov, WIDTH / HEIGHT, 2000);
spnCamera.position.set(x, y, z);
spnCreateScene.add(spnCamera);
}
function spnBasicCube(material, clr, l, w, depth, x, y, z) { // draw a basic cube and render it
if (material == "basic") {
var spnBasicCube = new THREE.Mesh(new THREE.CubeGeometry(l, w, depth), new THREE.MeshBasicMaterial({color: clr}));
spnBasicCube.position.x = x;
spnBasicCube.position.y = y;
spnBasicCube.position.z = z;
spnCreateScene.add(spnBasicCube);
spnRenderer.render(spnBasicCube);
console.log(spnBasicCube);
// this should end up making a cube but throws an error rn
}
}
Run Code Online (Sandbox Code Playgroud)
我希望有人能帮助我!谢谢!:)
不渲染立方体
spnRenderer.render(spnBasicCube);
但用相机渲染场景:
spnRenderer.render(spnCreateScene, spnCamera);
Run Code Online (Sandbox Code Playgroud)
请参阅文档THREE.WebGLRenderer.render:
Run Code Online (Sandbox Code Playgroud).render ( scene : Scene, camera : Camera ) : null使用相机渲染场景。
| 归档时间: |
|
| 查看次数: |
2586 次 |
| 最近记录: |