Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js 为什么照明不是';你在三点半工作吗?_Three.js - Fatal编程技术网

Three.js 为什么照明不是';你在三点半工作吗?

Three.js 为什么照明不是';你在三点半工作吗?,three.js,Three.js,我不明白为什么我的代码中的照明不起作用。我下载了一个简单的OBJ。文件测试OBJLoader,但模型不受影响。在我进一步编辑照明之前,至少环境照明可以工作。也许是OBJ。模型需要纹理吗 var container, stats; var camera, scene, renderer, controls; init(); animate(); function init() {

我不明白为什么我的代码中的照明不起作用。我下载了一个简单的OBJ。文件测试OBJLoader,但模型不受影响。在我进一步编辑照明之前,至少环境照明可以工作。也许是OBJ。模型需要纹理吗

            var container, stats;

        var camera, scene, renderer, controls;


        init();
        animate();


        function init() {

            container = document.createElement( 'div' );
            document.body.appendChild( container );

            scene = new THREE.Scene();

            camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 2000 );
            camera.position.z = 2.5;
            scene.add( camera );

            controls = new THREE.TrackballControls( camera );

            controls.rotateSpeed = 2.0;
            controls.zoomSpeed = 1.2;
            controls.panSpeed = 0.0;

            controls.noZoom = false;
            controls.noPan = true;

            controls.staticMoving = true;
            controls.dynamicDampingFactor = 0.3;

            controls.keys = [ 65, 83, 68 ];

            controls.addEventListener( 'change', render );

            var ambient = new THREE.AmbientLight( 0x020202 );
            scene.add( ambient );

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

            pointLight = new THREE.PointLight( 0xffaa00 );
            pointLight.position.set( 0, 0, 0 );
            scene.add( pointLight );

            sphere = new THREE.SphereGeometry( 100, 16, 8 );
            lightMesh = new THREE.Mesh( sphere, new THREE.MeshBasicMaterial( { color: 0xffaa00 } ) );
            lightMesh.scale.set( 0.05, 0.05, 0.05 );
            lightMesh.position = pointLight.position;
            scene.add( lightMesh );


            var loader = new THREE.OBJLoader();
            loader.load( "originalMeanModel.obj", function ( object ) {
                scene.add( object );
            } );

            renderer = new THREE.WebGLRenderer();
            renderer.setSize( window.innerWidth, window.innerHeight );
            container.appendChild( renderer.domElement );

        }

        function animate() {

            requestAnimationFrame( animate );
            controls.update();

        }

        function render() {

            camera.lookAt( scene.position );

            renderer.render( scene, camera );

        }
如果你几天前遇到了和我一样的问题,也许会对你有所帮助,如果你的obj中没有法线,那肯定是值得一看的地方

您也可以尝试从一个
MeshBasicMaterial
开始,检查顶点/面是否正常:
new THREE.MeshBasicMaterial({颜色:0x99999,线框:true,透明:true,不透明度:0.85})


同时,DoOb先生说,请考虑共享你正在加载的Obj.U/P> < P>我在使用3J.JS出口商为搅拌机时遇到了类似的问题,所有的东西都显得很暗,甚至在原来的搅拌器模型中设置了扩散颜色,环境光在三个JS代码中添加到场景中。原来修复程序是编辑转换模型文件的一部分,有一行内容是:

"colorAmbient" : [0, 0, 0]
我手动将其更改为

"colorAmbient" : [0.75, 0.75, 0.75]

它无处不在,解决了问题。我之所以提出这个问题,是因为我最好的猜测是,您正在经历类似的问题。如果看不到*.obj文件,则很难准确诊断问题,但也许在模型设置中,您可以尝试更改环境光颜色值,而不是漫反射颜色值,这是我们在为模型指定颜色时通常会想到的值。

MeshBasicMaterial in THREE.js类似于卡通着色器(适用于筒仓、阴影绘制或线框),且不受灯光影响


尝试使用MeshLambertMaterial或MeshPhongMaterial

是否可以共享您尝试加载的obj文件?是照明根本不起作用?还是仅使用阴影?您可以使用定向照明,而不必使用对象投射的任何实际阴影。源:。