three.js 添加光源无效?

js最后一段是添加光源的,但是不生效.
代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="canvas" style="margin-top: 200px;margin-left: 100px;"></div>
</body>
<script src="https://cdn.jsdelivr.net/npm/three@0.134.0/build/three.min.js"></script>
<script>
    // 创建3D场景对象Scene
    const scene = new THREE.Scene();

    //创建一个长方体几何对象Geometry
    const geometry = new THREE.BoxGeometry(100, 100, 100);
    //创建一个材质对象Material

    // MeshLambertMaterial  漫反射材质受光照影响
    // MeshBasicMaterial  基础材质不受影响
    const material = new THREE.MeshLambertMaterial({
        color: 0xff0000,//设置材质颜色
        transparent: true,//开启透明
        opacity: 0.8,//设置透明度
    });
    const mesh = new THREE.Mesh(geometry, material); //网格模型对象Mesh
    mesh.position.set(0, 10, 0); //设置网格模型在三维空间中的位置坐标,默认是坐标原点

    // 将模型mesh添加到scene
    mesh.receiveShadow = true; // 物体接收阴影
    mesh.castShadow = true; // cast投射,方块投射阴影 
    scene.add(mesh);
    const edges = new THREE.EdgesHelper(mesh, '#000');//设置边框,可以旋转
    edges.position.set(0, 10, 0); // 边框也需要设置位置坐标
    // 将边框edges添加到scene
    scene.add(edges);

    const width = 800; //宽度
    const height = 500; //高度
    const camera = new THREE.PerspectiveCamera(30, width / height, 1, 3000); 
    // 实例化一个透视投影相机对象
    camera.position.set(300, 200, 200);
    camera.lookAt(mesh.position);//指向mesh对应的位置

    // 创建渲染器对象
    const renderer = new THREE.WebGLRenderer();
    renderer.setClearColor('#ffffff')
    renderer.setSize(width, height);
    renderer.render(scene, camera); //执行渲染操作
    document.getElementById('canvas').appendChild(renderer.domElement);

    //点光源:两个参数分别表示光源颜色和光照强度
    const pointLight = new THREE.PointLight(0xffffff,1)
    pointLight.position.set(300,100,300);
    scene.add(pointLight);

</script>

</html>
阅读 3.3k
1 个回答

光源的添加要在 renderer 之前

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题