javascript - three.js : camera is not an instance of THREE. 相机错误

标签 javascript camera three.js

我正在使用 three.js 并且场景没有渲染。我在控制台中收到以下错误:

THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.
Uncaught SecurityError: Failed to execute 'texImage2D' on 'WebGLRenderingContext': The cross-origin image at file:///F:/Study/3rd%20Sem/ES%20XXX%20-20Intro%20to%20Computer%20Graphics/Stick%20Baddy/images/crate.jpg may not be loaded. 

这是我的一些代码片段:

相机:

var scene = new THREE.Scene(); // Create a Three.js scene object
var camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.1, 1000);

光:

var light = new THREE.DirectionalLight( 0xffffff );
light.position.set( 0, 1, 1 ).normalize();
scene.add(light);

添加立方体:

var geometry = new THREE.CubeGeometry(stickLenX, 20, 20);
var material = new THREE.MeshPhongMaterial( { map: THREE.ImageUtils.loadTexture('images/crate.jpg', {}, function() { renderer.render(scene); }) } ); 
var myStick = new THREE.Mesh(geometry, material); // Create a mesh based on the specified geometry (myStick) and material (normal).
scene.add(myStick);  // at (0,0,0)

渲染:

var render = function () {
document.addEventListener('mousemove', onDocumentMouseMove, false);

move();

renderer.render(scene, camera); // Each time we change the position of the cube object, we must re-render it.
    requestAnimationFrame(render); 
};
render();

它适用于 THREE.MeshNormalMaterial() 喜欢

var material = new THREE.MeshNormalMaterial();

在我的代码中,还有其他立方体和球体。他们中的任何一个都可能导致问题吗?请任何人都可以提到可能是什么问题?

--------更新:------------

使用 Wampserver 运行该文件有效。这是什么原因以及如何使其在没有服务器的情况下工作?

最佳答案

我使用 ImageUtils.loadTexture 和 PlaneGeometry 解决了这个问题。

            var geometry = new THREE.PlaneGeometry( 500, 300, 1, 1 );
            geometry.vertices[0].uv  =  new THREE.Vector2( 0 , 0 );
            geometry.vertices[1].uv  =  new THREE.Vector2( 2, 0 );
            geometry.vertices[2].uv  =  new  THREE.Vector2( 2, 2 );
            geometry.vertices[3].uv  =  new  THREE.Vector2( 0, 2 );

            texture     =  THREE.ImageUtils.loadTexture("text.png",null,function(t){

            });
            var material = new THREE.MeshBasicMaterial ( {map: texture} );
            var mesh     = new THREE.Mesh ( geometry, material );
            scene.add( mesh );

关于javascript - three.js : camera is not an instance of THREE. 相机错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26944839/

相关文章:

javascript - 如何用JS将计时器绑定(bind)到进度环?

android - ARCore Android Studio 向相机 View 添加过滤器

iOS 使用摄像头和 UILongPressGestureRecognizer 录制视频

javascript - 如何让相机跟随本示例中的地形高度 : http://threejs. org/examples/#webgl_terrain_dynamic

javascript - ThreeJS 中不显示阴影

javascript - 将 JavaScript 中的 UI 集成到 UWP 应用中

javascript - 获取浏览器视口(viewport)的宽度和高度,无论内容大小如何,并且不调整到 100%?

javascript - jQuery 表格分页 PHP

python - Pywebkitgtk Three.js 无法检测到 WebGL

javascript - 在 Three.js 中对线条的绘制进行动画处理