当前位置: 首页 > article >正文

从Unity到Three.js(安装启动)

发现在3D数字孪生或模拟仿真方向,越来越多的公司倾向使用Web端程序,目前一直都是使用的Unity进行的Web程序开发,但是存在不少问题,比如内存释放、shader差异化、UI控件不支持复制或输入中文等。虽然大多数问题都可以找到解决方案,但是最后也只能停在解决问题的程度,算不上是一个完美方案,因此想接触下three.js,开个系列记录下,一个0基础js的unity开发人员学习three.js的过程。
Three.js官方文档:(https://threejs.org/docs/index.html#manual/zh/introduction/Creating-a-scene)
一、环境配置,win10 64位操作系统。参考链接 https://zhuanlan.zhihu.com/p/653881053
1.安装Node.js: (https://www.nodejs.com.cn/)
win+R 输入cmd 输入node -v 确认node.js安装完成在这里插入图片描述
2.vscode安装

二、工程创建
1.新建一个存放工程的文件夹,如learning
2.将新建的工程目录文件夹拖拽到新打开的vscode中。
3.点击终端–新建终端 会发现终端直接进入了当前文件夹。在这里插入图片描述
4.创建vite项目,输入命令 npm create vite@latest
在出现的提示中,
设置项目名称,
框架默认Vanilla,
上下箭头选择javaScript在这里插入图片描述
5.安装threeJS
在左侧资源管理器项目名称文件夹上右键 选择在集成终端中打开。
输入命令 npm i vite three
这个过程等待可能会稍长一些时间。在这里插入图片描述
6.启动运行vite首页,输入 npm run dev在这里插入图片描述按住ctrl+鼠标左键,会直接在浏览器中打开,可以看到vite的主页。

三、编写第一个three.js代码,测试环境配置是否成功。
1.在左侧资源管理器中找到index.html
填入如下代码。

<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="utf-8">
    <title>My first three.js app</title>
    <style>
        body {
            margin: 0;
        }
    </style>
</head>
 
<body>
    <script type="module" src="main.js"></script>
</body>
 
</html>

2.找到main.js文件
填入如下代码。

import * as THREE from 'three';
 
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.BoxGeometry(1, 1, 1);
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
const cube = new THREE.Mesh(geometry, material);
cube.position.x += 4;
scene.add(cube);
 
 
const cube2 = new THREE.Mesh(geometry, material);
scene.add(cube2);
 
camera.position.z = 5;
 
function animate() {
    requestAnimationFrame(animate);
 
    cube.rotation.x += 0.01;
    cube.rotation.y += 0.01;
 
    renderer.render(scene, camera);
}
 
animate();

刷新主页,可以看到两个cube,一个静态的,一个实时旋转的。


http://www.kler.cn/a/232234.html

相关文章:

  • 【机器学习】机器学习中用到的高等数学知识-1.线性代数 (Linear Algebra)
  • 【Redis】Redis的一些应用场景及使用策略
  • 【C++】list 与 string 基础与实现字符串操作
  • 生成式GPT商品推荐:精准满足用户需求
  • Go语言的零值可用性:优势与限制
  • 聊聊Flink:Flink的分区机制
  • STM32输出PWM波控制180°舵机
  • VSCode 文件夹增加右键打开
  • 图数据库neo4j入门
  • ChatGPT在肾脏病学领域的专业准确性评估
  • (delphi11最新学习资料) Object Pascal 学习笔记---第4章第2.5节(重载和模糊调用)
  • Linux学习
  • C#调用WechatOCR.exe实现本地OCR文字识别
  • PostgreSQL 与 MySQL 相比,优势何在?
  • 基于蒙特卡洛的电力系统可靠性分析matlab仿真,对比EDNS和LOLP
  • 服务器性能监控管理方法及工具
  • 登山 ——最长上升子序列
  • 第9章 SpringBoot综合项目实战——个人博客系统
  • @PostMapping/ @GetMapping等请求格式
  • JavaScript基础第五天
  • vue使用Mars3d弹框嵌套video视频/实时视频(m3u8)使用hls.js
  • 实例分割论文阅读之:《Mask Transfiner for High-Quality Instance Segmentation》
  • ubuntu系统下c++ cmakelist vscode debug(带传参的debug)的详细示例
  • 通过平扫CT实现胰腺癌早筛(平扫CT+AI)
  • pycharm像jupyter一样在控制台查看后台变量
  • 2024年Java架构篇之设计模式