我使用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相关问答推荐

空的结果抓取网站与Fetch和Cheerio

处理时间和字符串时MySQL表中显示的日期无效

如何从调整大小/zoom 的SVG路径定义新的d属性?""

在JS中拖放:检测文件

优化Google Sheet脚本以将下拉菜单和公式添加到多行

在Matter.js中添加从点A到另一个约束的约束

如何在Java脚本中对列表中的特定元素进行排序?

Next.js中的服务器端组件列表筛选

在验证和提交表单后使用useNavigate()进行react 重定向,使用带有加载器和操作的路由

如何使本地html页面在重新加载时保持当前可隐藏部分的打开状态?

处理app.param()中的多个参数

如何修复使用axios运行TSC index.ts时出现的错误?

为什么我不能使用其同级元素调用和更新子元素?

如何压缩图像并将其编码为文本?

表单数据中未定义的数组键

更新文本区域行号

将字体样式应用于material -UI条形图图例

将Windows XP转换为原始数据以在html前端中显示

在使用Jest进行测试时,在Express应用程序中未定义Multer

TS node 找不到依赖的模块