Three.js 对创建的物体进行位置旋转缩放修改。

news2024/11/15 17:58:56

1.在场景里面添加一个物体作为示例

 // 创建一个物体(形状)
    const geometry = new THREE.BoxGeometry(5, 5, 5);
    //创建材质(外观)
    const material2 = new THREE.MeshLambertMaterial({
      color: 0xfff, //设置材质颜色
      side: THREE.DoubleSide, //设置两面可见
      transparent: true, //开启透明度
      opacity: 0.5, //设置透明度
    });
    // 创建一个网格模型对象
    const mesh = new THREE.Mesh(geometry, material2);
    this.scene.add(mesh);

2. 修改物体的位置

要修改物体的位置,直接访问其 position 属性,并设置其 xyz 值。

mesh.position.x = 2; // 设置 X 轴位置为 2
mesh.position.y = 1; // 设置 Y 轴位置为 1
mesh.position.z = -5; // 设置 Z 轴位置为 -5

set() 方法

  • 作用set() 方法用于设置对象的属性,可以将每个属性(例如位置的 x、y、z 坐标)分别指定为参数。
  • mesh.position.set(0, 2.5, 0); 

    set() 方法直接设置对象的属性值,如果调用时只提供部分参数,未指定的属性将保持不变(不会被清除为默认值)。

copy() 方法

  • 作用copy() 方法用于将另一个对象的属性复制到当前对象中,通常用于复制向量、颜色等对象。
  • 注意copy() 方法将完整地复制另一个对象的所有属性,覆盖当前对象的所有对应属性。如果参数对象有额外的属性,它们不会被考虑或复制。
let cc = new THREE.Vector3(0, 0.2, 0);
mesh.position.copy(cc);

3. 修改物体的旋转

mesh.rotation.x = Math.PI / 4; // 绕 X 轴旋转 45 度(π/4 弧度)
mesh.rotation.y = Math.PI / 3; // 绕 Y 轴旋转 60 度(π/3 弧度)
mesh.rotation.z = Math.PI / 6; // 绕 Z 轴旋转 30 度(π/6 弧度)


mesh.rotation.set(2, 1, 0.5); //旋转

假设有两个立方体 cube1cube2,你可以这样使用 copy 方法:

cube2.rotation.copy(cube1.rotation);

4. 修改物体的缩放

物体的缩放通过其 scale 属性进行设置。

cube.scale.set(2, 1, 0.5); // 在 X 轴上放大两倍,Y 轴保持原大小,Z 轴缩小为原来的一半

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1926325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot + vue 管理系统

SpringBoot vue 管理系统 文章目录 SpringBoot vue 管理系统1、成品效果展示2、项目准备3、项目开发3.1、部门管理3.1.1、前端核心代码3.1.2、后端代码实现 3.2、员工管理3.2.1、前端核心代码3.2.2、后端代码实现 3.3、班级管理3.3.1、前端核心代码3.3.2、后端代码实现 3.4、…

Matlab 计算一个平面与一条直线的交点

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里使用一种很有趣的坐标:Plucker线坐标,它的定义如下所示: 这个坐标有个很有趣的性质,将直线 L L L与由其齐次坐标 V = (

STM32的定时器HAL库

目录 一,定时器的介绍 一,定时器的介绍 1. STM32F103C8T6微控制器内部集成了多种类型的定时器,这些定时器在嵌入式系统中扮演着重要角色,用于计时、延时、事件触发以及PWM波形生成、脉冲捕获等应用。 1.1 高级定时器&…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(六)-人工智能控制的自主无人机用例

引言 本文是3GPP TR 22.829 V17.1.0技术报告,专注于无人机(UAV)在3GPP系统中的增强支持。文章提出了多个无人机应用场景,分析了相应的能力要求,并建议了新的服务级别要求和关键性能指标(KPIs)。…

从汇编层看64位程序运行——函数的调用和栈平衡

函数调用 不知道有没有人想过一个问题:A函数调用B函数,B函数是如何知道在调用结束后回到A函数中的? 比如下面的代码,main函数调用foo。当foo执行完毕,需要执行main函数的return 0语句。但是main和foo是割裂的&#x…

【排序 】

目录 1, 排序的概念及引用 1.1 排序的概念 1.2 常见的排序算法 2, 常见排序算法的实现 2.1 插入排序 2.1.1基本思想: 2.1.2 直接插入排序 2.1.3 希尔排序( 缩小增量排序 )(面试很少问) 2.2 选择排序 2.2.1基本思想: 2.…

Java巅峰之路---基础篇---综合练习(面向对象)

目录 文字版格斗游戏 基础版 souf输出语句 进阶版 键盘录入的说明 复杂对象数组练习 需求: 添加和遍历 删除和遍历 修改和遍历 文字版格斗游戏 基础版 格斗游戏,每个游戏角色的姓名,血量,都不相同,在选定人…

2024最新Cloudways主机使用教程(含最新Cloudways折扣码)

Cloudways是一家提供云托管服务的公司,可以帮助你轻松管理和运行你的网站。本教程是Cloudways主机注册和使用教程。Cloudways界面简洁,使用方便,不需要复杂的设置,就能快速搭建一个WordPress网站。它的主机功能包括高级缓存和Bree…

Linux命令更新-Vim 编辑器

简介 Vim 是 Linux 系统中常用的文本编辑器,功能强大、可扩展性强,支持多种编辑模式和操作命令,被广泛应用于程序开发、系统管理等领域。 1. Vim 命令模式 Vim 启动后默认进入命令模式,此时键盘输入的命令将用于控制编辑器本身&…

QT控件篇三

一、微调框 微调框(QSpinBox)是一个常用的Qt控件,允许用户通过增加或减少值来输入数字。分为两种, 整型-QSpinBox 浮点 QDoubleSpinBoxQSpinBox(微调框)的 setSingleStep 函数可以用来设置每次调整的步长(…

Kafka基础入门-代码实操

Kafka是基于发布/订阅模式的消息队列,消息的生产和消费都需要指定主题,因此,我们想要实现消息的传递,第一步必选是创建一个主题(Topic)。下面我们看下在命令行和代码中都是如何创建主题和实现消息的传递的。…

TDesign组件库日常应用的一些注意事项

【前言】Element(饿了么开源组件库)在国内使用的普及率和覆盖率高于TDesign-vue(腾讯开源组件库),这也导致日常开发遇到组件使用上的疑惑时,网上几乎搜索不到其文章解决方案,只能深挖官方文档或…

Python编程工具PyCharm和Jupyter Notebook的使用差异

在编写Python程序时需要用到相应的编程工具,PyCharm和Jupyter Notebook是最常用2款软件。 PyCharm是很强大的综合编程软件,代码提示、代码自动补全、语法检验、文本彩色显示等对于新手来说实在太方便了,但在做数据分析时发现不太方便&#xf…

UGUI优化篇(更新中)

UGUI优化篇 1. 基础概念2. 重要的类1. MaskableGraphic类继承了IMaskable类2. 两种遮罩的实现区别RectMask2DMask 3. 渲染部分知识深度测试深度测试的工作原理 渲染队列透明物体在渲染时怎么处理为什么透明效果会造成性能问题 1. 基础概念 所有UI都由网格绘制的如image由两个三…

成为CMake砖家(2): macOS创建CMake本地文档的app

大家好,我是白鱼。 使用 CMake 的小伙伴, 有的是在 Windows 上, 还有的是在 macOS 上。之前咱们讲了 windows 上查看 cmake 本地 html 文档的方式, 这篇讲讲 macOS 上查看 cmake 本地 html 文档的方法。 1. 问题描述 当使用 CMa…

数模·图论

matlab中图的表示 顶点集权值集的形式 s是源点,t是终点,w是对应的权值 调用graph(s,t,w)作为参数创建图 调用plot函数绘图plot(G,EdgeLabel,G.Edges.Weight,LineWidth,2) 设置x和y的坐标范围set(gca,XTick,[],YTick,[]) s[1 2 3]; t[4 1 2]; w[5 2 6]; …

程序包不存在【java: 程序包org.springframework.boot不存在】

1、问题提示:java: 程序包org.springframework.boot不存在 注意:已经下载好了程序包,就是提示不存在 2、解决办法

一个开源完全免费的无损视频或音频的剪切/裁剪/分割/截取和视频合并工具

大家好,今天给大家分享一款致力于成为顶尖跨平台FFmpeg图形用户界面应用的软件工具LosslessCut。 LosslessCut是一款致力于成为顶尖跨平台FFmpeg图形用户界面应用的软件工具,专为实现对视频、音频、字幕以及其他相关媒体资产的超高速无损编辑而精心打造。…

《后端程序猿 · EasyPOI 导入导出》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

蓝桥杯嵌入式第十五届模拟考试3解析

1 题目 2 程序 /* USER CODE BEGIN PTD */ char buf1[20],buf2[20],buf3[20],buf4[20],buf5[20],buf6[20],buf7[20],buf8[20],buf9[20]; struct keys {int step;int length;int state; }key[5]; int display; double v1,v2; int t; double v1l1.2,v1u2.2,v2l1.4,v2u3.0; dou…