前端小火龙 2024-03-16 22:00 采纳率: 93.3%
浏览 11
已结题

three中坐标系和几何体,无法展示

为什么我在vue3 + three.js项目中创建坐标系和几何体,我的界面上没有任何内容
下面是我的vue代码

<template>
  <div ref="homeDom" class="home"></div>
</template>
<script setup>
import { ref, onMounted } from "vue";
const homeDom = ref(null);

import * as THREE from "three";
// 创建场景
const scene = new THREE.Scene();

// 创建摄像机
const camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000);//透视相机(角度,宽高比,近端,远端)

// 设置摄像机位置
camera.position.set = (-30, 40, 30);
// 设置摄像机朝向
camera.lookAt = (scene.position);

// 画线
const renderer = new THREE.WebGLRenderer();
renderer.setClearColor(new THREE.Color(0xeeeeee));
renderer.setSize(window.innerWidth, window.innerHeight);

// 坐标系
const axes = new THREE.AxesHelper(5);
scene.add(axes);

// 引入几何体
const geometry = new THREE.BoxGeometry(1, 2, 1);
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);

onMounted(() => {
  // 将渲染器渲染到页面
  homeDom.value.appendChild(renderer.domElement);
  // 渲染
  renderer.render(scene, camera);
});
</script>
<style>
.home {
  width: 100vw;
  height: 100vh;
}
</style>

然后我这里就什么都没有,是一个如下的空白

img

  • 写回答

6条回答 默认 最新

  • GISer Liu 2024-03-17 14:10
    关注

    该回答引用自GPT-3.5,由博主GISer Liu编写:

    问题分析:
    根据提供的代码,您在Vue 3和Three.js项目中创建了场景、摄像机、坐标系和一个立方体几何体,但是页面上没有显示任何内容。
    解决方案:

    1. 摄像机设置问题: 在您的代码中,摄像机的位置和朝向设置存在问题。您使用了camera.position.setcamera.lookAt来设置摄像机的位置和朝向,但是您的写法有误。正确的写法是直接赋值给position属性和lookAt方法。修改如下:
      javascriptCopy code
      camera.position.set(-30, 40, 30);
      camera.lookAt(scene.position);
      
    2. 添加渲染器到页面: 您在onMounted钩子中将渲染器的DOM元素添加到页面,但是您的渲染器尺寸是根据窗口大小设置的。建议将渲染器的尺寸设置为homeDom的大小,以确保正确显示。修改如下:
      javascriptCopy code
      renderer.setSize(homeDom.value.clientWidth, homeDom.value.clientHeight);
      
    3. 修改摄像机视角: 您在透视相机中设置了摄像机的视角为45度,但是如果场景中的物体过大或过小,可能无法正确显示。您可以尝试调整摄像机的位置或视角以确保物体在视野内。您也可以尝试改变立方体的尺寸来看看是否能够显示出来。
      修改后的完整代码如下所示:
      vueCopy code
      <template>
      <div ref="homeDom" class="home"></div>
      </template>
      <script setup>
      import { ref, onMounted } from "vue";
      const homeDom = ref(null);
      import * as THREE from "three";
      const scene = new THREE.Scene();
      const camera = new THREE.PerspectiveCamera(45, 2, 0.1, 1000);
      camera.position.set(-30, 40, 30);
      camera.lookAt(scene.position);
      const renderer = new THREE.WebGLRenderer();
      renderer.setClearColor(new THREE.Color(0xeeeeee));
      renderer.setSize(homeDom.value.clientWidth, homeDom.value.clientHeight);
      const axes = new THREE.AxesHelper(5);
      scene.add(axes);
      const geometry = new THREE.BoxGeometry(1, 2, 1);
      const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
      const cube = new THREE.Mesh(geometry, material);
      scene.add(cube);
      onMounted(() => {
      homeDom.value.appendChild(renderer.domElement);
      renderer.render(scene, camera);
      });
      </script>
      <style>
      .home {
      width: 100vw;
      height: 100vh;
      }
      </style>
      
      请尝试修改后的代码,并重新运行您的项目,查看是否能够正常显示坐标系和立方体。

    如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订

    用户答题指南

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 4月25日
  • 已采纳回答 4月17日
  • 创建了问题 3月16日

悬赏问题

  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价