threejs安装与开始

这篇具有很好参考价值的文章主要介绍了threejs安装与开始。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

安装导入

npm

npm i three

导入

并非所有功能都在three,还需从子目录导入

// three模块
import * as three from 'three'
// 一些不在three模块的功能,这里是OrbitControls导入示例
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';

静态页面/CDN

three是一个esm模块,需要按模块导入方法导入,

// 不是所有浏览器都支持ems模块,这是一个esm模块兼容库
<script defer src="https://unpkg.com/es-module-shims@0.4.6/dist/es-module-shims.js"></script>
<script type="importmap">
	{
		"imports": {
			"three": "https://unpkg.com/three@<version>/build/three.module.js",
			"three/addons/": "https://unpkg.com/three@<version>/examples/jsm/"
		}
	} </script>
<script type="module">
	import * as THREE from 'three'; const scene = new THREE.Scene()
	import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
</script>

npm包查看

build目录有5个js文件,大致分为three.jsthree.module.jsthree.js中提示已经弃用,现在应该使用three.module.js

开始

环境

场景
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.append(renderer.domElement)

setSize 函数

  • 布尔。默认true,宽高既是高度也是分辨率。false 仅设置分辨率
    直接设置canvas的宽高后,就不用在这里设置宽高了,这里设置分辨率就行。

动画都是基于canvas标签的,示例中的renderer.domElement就是一个canvas标签,所以可以直接设置宽高。

动画编写

const geometry = new three.BoxGeometry(1, 1, 1)
const material = new three.MeshBasicMaterial({ color: 0xf1f1aa })
const cube = new three.Mesh(geometry, material)

scene.add(cube)
camera.position.z = 5
  • 形状。一个几何立体形状
  • 材质。一个内置的普通材质
  • 物体。创建物体对象
  • 添加到场景
  • 移动相机。任何物体在场景的初始位置都是(0, 0, 0),包括相机,所以移动一下相机,不然看不到这个物体,当然,你也可以不移动相机,而去移动物体,这样
// camera.position.z = 5
cube.position.z = -5

渲染动画

function animate() {
  requestAnimationFrame(animate)
  cube.rotation.x += 0.1
  cube.rotation.y += 0.1
  renderer.render(scene, camera)
}
animate()

你将看到一个不断旋转的立方体。
rotation 是旋转属性
renderer.render() 是一次性的渲染器
requestAnimationFrame(callback) 是属于window的,辅助渲染动画的一次性方法。

  • 因为一次性,所以需要将你的动画函数,传入它的回调参数,且每次都要调用它,以达到不断变化的动画效果。
  • 我认为它和定时器的功能差不多,我进行尝试过
function animate() {
  cube.rotation.x += 0.1
  cube.rotation.y += 0.1
  renderer.render(scene, camera)
}
setInterval(() => {
  animate()
}, 20);

不过它是js内置的用来专门渲染动画的,使用requestAnimationFrame()肯定更好文章来源地址https://www.toymoban.com/news/detail-710358.html

完整示例

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.append(renderer.domElement)

const geometry = new three.BoxGeometry(1, 1, 1)
const material = new three.MeshBasicMaterial({ color: 0xf1f1aa })
const cube = new three.Mesh(geometry, material)
scene.add(cube)
camera.position.z = 5

function animate() {
  requestAnimationFrame(animate)
  cube.rotation.x += 0.1
  cube.rotation.y += 0.1
  renderer.render(scene, camera)
}
animate()

到了这里,关于threejs安装与开始的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【js&threeJS】入门three,并实现3D汽车展示厅,附带全码

    首先放个最终效果图:   三维(3D)概念: 三维(3D)是一个描述物体在三个空间坐标轴上的位置和形态的概念。相比于二维(2D)只有长度和宽度的平面,三维增加了高度或深度这一维度 在三维空间中,我们使用三个独立的坐标轴来描述物体的位置。通常使用笛卡尔坐标系

    2024年02月11日
    浏览(31)
  • threejs点击获取三维坐标(Three.js获取鼠标点击的三维坐标)

    绑定点击事件,通过 THREE.Raycaster 光线投射,用于确定鼠标点击位置上有哪些物体, raycaster.intersectObjects(scene.children) 返回点击位置上所有的物体的数组;我们用 var selected = intersects[0] 取第一个,也就是最前面的那个物体;在通过 selected.point 取点坐标

    2024年02月11日
    浏览(80)
  • Three.js--》前端开发者掌握3d技术不再是梦,初识threejs

            这十年来 web 得到了快速的发展,随着 webgl 的普及,网页的表现能力越来越强大,网页上已经开始可以做出很多复杂的动画和精美的效果,还可以通过 webgl 在网页中绘制高性能的3d图形,别的不说,凡是入门程序员都离不开github这个网站,细心的人都会发现,gi

    2024年02月01日
    浏览(48)
  • 在VSCode中导出安装的所有插件并在其他计算机进行导入

    如图所示: 当您在另一台计算机上导出了 Visual Studio Code 编辑器已安装的扩展程序列表时,您可以按照以下步骤在另一台计算机上安装这些扩展程序: 将扩展程序列表文件(例如 “extensions.txt”)复制到您要安装扩展程序的计算机上的任何位置。 在您要安装扩展程序的计算

    2024年02月16日
    浏览(31)
  • VUE使用Three.js实现模型,点击交互,相机旋转视角跟随移动(Threejs中使用Tweenjs,含demo源码)

    目录 一、Three.js是什么? 二、VUE简单使用Three.js步骤 1.npm安装 2.template模板 3.引入库 4.定义全局变量 5.初始化场景 6.初始化相机 7.初始化灯光 8.初始化渲染器 9.创建模型(这里我搭建的模型是一个简单双面货架模型) 10.根据浏览器窗口自适应 11.初始化函数,页面加载完成时调用

    2024年02月03日
    浏览(43)
  • 使用 Threejs 从基础开始构建 3D 地球

    演示效果 git源码地址 场景创建 相机 坐标辅助器 状态检测器 渲染器 轨道控制器 粒子星空 地球和大气层创建 创建星轨环 创建卫星移动轨迹 创建卫星 二维经纬度坐标转三维球坐标 创建标点 绘制飞线 在地球上绘制标点和飞线 一般在执行完上述方法后能看到如下图的效果:

    2024年01月25日
    浏览(44)
  • 【Three.js】vue2导入pcd文件 PCDLoader

    a. TypeError: Cannot read properties of null (reading \\\'1\\\')     at parseHeader (PCDLoader.js?edd4:119:1)     at PCDLoader.parse (PCDLoader.js?edd4:226:1)     at Object.eval [as onLoad] (PCDLoader.js?edd4:34:1)     at XMLHttpRequest.eval (three.module.js?5a89:34770:1) b. GET http://localhost:8080/public/Zaghetto 404 (Not Found) 两者本质同个问题,

    2024年02月08日
    浏览(29)
  • 解决conda创建环境,环境路径并非是conda安装目录下的envs或我们设置的目录

    有些同学可能遇到使用conda创建环境,环境的路径总是在C盘,但是明明conda安装在D盘,而且配置文件的默认路径也是D盘。其实原因很简单,因为设置的默认路径没有足够的权限。 1.怎么查看默认的目录呢 第一种方法: 找到 .condarc 文件,一般在 C:Usersadministrator.condarc ,以文

    2024年02月11日
    浏览(35)
  • Three.js指定路径漫游(站走切换、路径动画、展示路线、开始、暂停、继续、退出、镜头跟随)

    (由点生成曲线,npc沿曲线移动,相机跟随方式1)参考大佬: https://blog.csdn.net/weixin_40856652/article/details/125302355 (相机跟随方式2)参考大佬: https://lequ7.com/guan-yu-threejsthreejs-xi-lie-xie-yi-ge-di-yi-san-ren-cheng-shi-jiao-xiao-you-xi.html (模型站走切换)参考大佬: https://zhuanlan.zhihu.com/p

    2024年02月05日
    浏览(27)
  • Blender Three.js 智慧3D机房开发 模型创建与导入中的常见问题与解决方案

    目录 机房效果展示 可能出现的问题及解决方法 Three. js服务器运行环境搭建及文件配置 使用Node.js搭建本地服务器 文件配置  Blender材质处理 Blender导出GLTF模型出现材质丢失 Three.js玻璃材质制作  Blender导出glTF格式模型 Three. js模型显示场景的设置 总结   机房正面图: 机房背面

    2024年02月05日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包