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

31. 三维向量Vector3与模型位置

点模型Points、线模型Line、网格网格模型Mesh等模型对象的父类都是Object3D (opens new window),如果想对这些模型进行旋转、缩放、平移等操作,如何实现,可以查询Threejs文档Object3D (opens new window)对相关属性和方法的介绍。

三维向量Vector3

三维向量Vector3有xyz三个分量,threejs中会用三维向量Vector3表示很多种数据,本节课提到的比较简单,就是位置.position和缩放.scale属性。

查看three.js文档你可以知道Vector3对象具有属性.x.y.zVector3对象还具有.set()等方法。

//new THREE.Vector3()实例化一个三维向量对象
const v3 = new THREE.Vector3(0,0,0);
console.log('v3', v3);
v3.set(10,0,0);//set方法设置向量的值
v3.x = 100;//访问x、y或z属性改变某个分量的值

位置属性.position

// 位置属性.position使用threejs三维向量对象Vector3表示的
console.log('模型位置属性.position的值', mesh.position);

模型位置.position属性用一个三维向量表示,那意味着,以后你想改变位置属性,就应该查询文档Vector3。

这里之所以强调这一点,课程目的不单单是给你介绍具体的知识点,也是在引导你学会查文档,降低记忆压力。

改变位置属性

通过模型位置属性.position可以设置模型在场景Scene中的位置。模型位置.position的默认值是THREE.Vector3(0.0,0.0,0.0),表示坐标原点。

设置网格模型y坐标

mesh.position.y = 80;

设置模型xyz坐标

mesh.position.set(80,2,10);

平移

执行.translateX().translateY()等方法本质上改变的都是模型的位置属性.position

网格模型沿着x轴正方向平移100,可以多次执行该语句,每次执行都是相对上一次的位置进行平移变换。

// 等价于mesh.position = mesh.position + 100;
mesh.translateX(100);//沿着x轴正方向平移距离100

沿着Z轴负方向平移距离50。

mesh.translateZ(-50);

沿着自定义的方向移动。

//向量Vector3对象表示方向
const axis = new THREE.Vector3(1, 1, 1);
axis.normalize(); //向量归一化
//沿着axis轴表示方向平移100
mesh.translateOnAxis(axis, 100);

缩放

属性.scale表示模型对象的xyz三个方向上的缩放比例,.scale的属性值是一个三维向量对象Vector3,默认值是THREE.Vector3(1.0,1.0,1.0)

x轴方向放大2倍

mesh.scale.x = 2.0;

网格模型xyz方向分别缩放0.5,1.5,2倍

mesh.scale.set(0.5, 1.5, 2)
http://www.lryc.cn/news/441060.html

相关文章:

  • C# Action和delegate区别及示例代码
  • 深度优先搜索: 探索图结构的括号化旅程
  • LINUX网络编程:传输层
  • PyTorch框架
  • 分布式系统实战经验
  • 软考(中级-软件设计师)(0919)
  • WhaleStudio 与飞腾 S5000C 处理器完成产品兼容测试!
  • 【Arduino】Arduino使用USB-TTL无法下载程序问题
  • 使用源代码编译R包的过程
  • 基于JavaWeb开发的java springboot+mybatis电影售票网站管理系统前台+后台设计和实现
  • 【论文阅读】Face2Diffusion for Fast and Editable Face Personalization
  • 金钥匙系列:Kubernetes (K8s) 服务集群技术栈学习路线
  • centos远程桌面连接windows
  • Android 系统下:普通应用无缝安装,Launcher 应用安装遭遇罕见障碍解析
  • VMware vCenter Server 8.0U3b 发布下载,新增功能概览
  • Unity 百度AI实现无绿幕拍照抠像功能(详解版)
  • MySQL_表的基本操作
  • 【网站架构部署与优化】源码编译安装LAMP
  • 【Linux】Linux的基本指令(1)
  • Python安装虚拟环境Conda
  • 基于STM32设计的烘干车间远程控制系统(腾讯云IOT)(228)
  • Nginx泛域名 解析的匹配前缀绑定或转发到子目录
  • 黑神话悟空mac可以玩吗
  • Nuxt Kit 中的插件:创建与使用
  • C++(虚构造与虚析构/类型信息运算符/强制类型转换)
  • python毕业设计基于django+vue医院社区医疗挂号预约综合管理系统7918h-pycharm-flask
  • tidb 集群搭建
  • SpringBoot开发——Spring Boot Controller 最佳实践
  • 使用Ubuntu耳机输出正弦波信号
  • Python编程 - 协程