javascript - 如何使用three.js创建一个球体?

标签 javascript three.js

我正在使用three.js 制作一个球体,但输出只是一个黑屏,如图所示。
SphereBlankScreen
我使用的代码是:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>My first three.js app</title>
        <style>
            body { margin: 0; }
        </style>
    </head>
    <body>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r79/three.min.js"></script>
        <script>
            const scene = new THREE.Scene();
            const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );

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

            const geometry = new THREE.SphereGeometry( 15, 32, 16 );
            const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
            const sphere = new THREE.Mesh( geometry, material );
            scene.add( sphere );

            camera.position.z = 5;

            function animate() {
                requestAnimationFrame( animate );

                sphere.rotation.x += 0.01;
                sphere.rotation.y += 0.01;

                renderer.render( scene, camera );
            };

            animate();
        </script>
    </body>
</html>

我无法解释为什么代码无法渲染球体。什么地方出了错?

最佳答案

你的相机在球体内。将其移离原点更远一点,如下面的示例所示:

const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.z = 50;

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

const geometry = new THREE.SphereGeometry(15, 32, 16);
const material = new THREE.MeshBasicMaterial({
  color: 0xffff00
});
const sphere = new THREE.Mesh(geometry, material);
scene.add(sphere);

function animate() {
  requestAnimationFrame(animate);

  sphere.rotation.x += 0.01;
  sphere.rotation.y += 0.01;

  renderer.render(scene, camera);
};

animate();
body {
      margin: 0;
}
<script src="https://cdn.jsdelivr.net/npm/three@0.143/build/three.min.js"></script>

关于javascript - 如何使用three.js创建一个球体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73265217/

相关文章:

javascript - Three.js - 更新纹理

javascript - Three.js - 在立方体上渲染阴影,但不在导入的 json 网格对象上渲染

javascript - 两个 Canvas 作为 Three.js 中平面的纹理

javascript - 三个js的loader使用webworker和IndexedDB

javascript - 在 Three.js 场景中选择和修改 Material

javascript - RequireJS 文本插件的 PhoneGap/cordova 问题

javascript - 让foreach在javascript循环中一一显示?

javascript - 脚本标签正在从文件 :///instead of http://加载

javascript - 如何在 dropzone.js 中获取选定的文件路径

javascript - jquery .on() 未触发