THREE.js 入门(一)xyz坐标系
一、坐标系概念
在 three.js
中,相机的默认朝向是沿着 Z 轴的负方向。也就是说,默认情况下,相机会沿着 Z 轴的负方向“看”到场景中的对象,而 X 轴和 Y 轴分别对应水平方向和垂直方向。换句话说,相机的默认位置是 (0, 0, 0)
,并且它会朝向 负 Z 轴。
默认方向:
- X 轴:水平,正方向向右,负方向向左。
- Y 轴:垂直,正方向向上,负方向向下。
- Z 轴:深度,正方向向外(远离相机),负方向向里(靠近相机)。
默认相机朝向:
默认情况下,当你创建一个相机(比如 THREE.PerspectiveCamera
)时,相机会位于 (0, 0, 0)
,并且它会朝向 Z 轴的负方向
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.set(0, 0, 5); // 相机的位置在 (0, 0, 5)
camera.lookAt(0, 0, 0); // 相机朝向 (0, 0, 0)
在这个例子中,camera.position.set(0, 0, 5)
表示将相机放置在 Z = 5
的位置,即距离场景原点 5 个单位。默认情况下,相机会朝向场景的中心 (0, 0, 0)
,即 lookAt(0, 0, 0)
。
二、调整相机的朝向
如果你想改变相机的朝向或方向,可以通过以下方法:
-
修改
camera.lookAt()
:lookAt()
方法可以让相机指向一个特定的点。可以传入一个目标点的坐标或一个THREE.Vector3
对象来调整相机的朝向。// 相机指向 (1, 1, 0) 位置 camera.lookAt(new THREE.Vector3(1, 1, 0));
-
直接设置相机的旋转: 你还可以直接设置相机的旋转(
rotation.x
,rotation.y
,rotation.z
),这将改变相机的朝向。camera.rotation.x = Math.PI / 4; // 旋转相机 45 度
-
修改相机位置: 你可以直接通过设置相机的位置 (
camera.position.set(x, y, z)
) 来控制相机的位置,并通过lookAt()
或旋转来调整相机的朝向
注:Unity 使用的是左手坐标系,threejs是右手坐标系
相关文章:
THREE.js 入门(一)xyz坐标系
一、坐标系概念 在 three.js 中,相机的默认朝向是沿着 Z 轴的负方向。也就是说,默认情况下,相机会沿着 Z 轴的负方向“看”到场景中的对象,而 X 轴和 Y 轴分别对应水平方向和垂直方向。换句话说,相机的默认位置是 (0,…...
Android仿美团左右联动购物列表
Android仿美团左右联动购物列表 左右联动购物列表,不难。 一、思路: 两个RecycleView 二、效果图: 三、关键代码: public class MainActivity extends AppCompatActivity {private RecyclerView rl_left;private RecyclerVie…...
HTML 标签语义化指南:让网页更易读
HTML 语义化标签是指在 HTML 中使用具有明确含义的标签来标记网页内容的结构和意义。这些标签可以提供更多的语义信息,有助于搜索引擎理解网页内容,并为使用辅助技术的用户提供更好的访问体验。 以下是一些常见的HTML语义化标签及其含义和用途ÿ…...
Java日志记录几种实现方案
在平时使用到一些软件中,比如某宝或者某书,通过记录用户的行为来构建和分析用户的行为数据,同时也能更好优化产品设计和提升用户体验。比如在一个订单系统中,需要确定追踪用户的行为,比如: 登录/登出浏览商…...
【C++算法】32.前缀和_矩阵区域和
文章目录 题目链接:题目描述:解法C 算法代码: 题目链接: 1314. 矩阵区域和 题目描述: 解法 防止有人看不明白题目,先解释一下题目 二维前缀和思想: 使用前缀和矩阵 ret [x1,y1]~[x2,y2] D …...
30天学会Go--第7天 GO语言 Redis 学习与实践
30天学会Go–第7天 GO语言 Redis 学习与实践 文章目录 30天学会Go--第7天 GO语言 Redis 学习与实践前言一、Redis 基础知识1.1 Redis 的核心特性1.2 Redis 常见使用场景 二、安装 Redis2.1 在 Linux 上安装2.2 在 Windows 上安装2.3 使用 Docker 安装 Redis 三、Redis 常用命令…...
面经自测——死锁/死锁的必要条件/死锁的预防/进程通信的方式
前言 本文是作者专门用来自测Java后端相关面试题的,所有问题都是在牛客、知识星球或网上找到的最近最新的面试题,全文回答都是作者按自己的真实水平仿照真实环境的回答,所以答案不一定真实(但回答一定真诚🤣࿰…...
Mysql索引,聚簇索引,非聚簇索引,回表查询
什么是索引 数据库索引是为了实现高效数据查询的一种有序的数据数据结构,类似于书的目录,通过目录可以快速的定位到想要的数据,因为一张表中的数据会有很多,如果直接去表中检索数据效率会很低,所以需要为表中的数据建立…...
Spring完整知识三(完结)
Spring集成MyBatis 注意 Spring注解形式集成MyBatis时,若SQL语句比较复杂则仍采用映射文件形式书写SQL语句;反之则用注解形式书写SQL语句,具体可详见Spring注解形式 环境准备相同步骤 Step1: 导入相关坐标,完整pom.…...
kafka-clients之ConsumerConfig
Kafka ConsumerConfig 中的配置项用于定义消费者的行为,如消费方式、偏移管理、组协调等。以下是ConsumerConfig中的关键配置项及其详细说明: 1. bootstrap.servers 类型:List<String>说明:Kafka集群的地址列表࿰…...
关于“浔川AI翻译”使用情况的调研报告
关于“浔川 AI 翻译”使用情况的调研报告 随着全球化进程加速及外语学习需求攀升,AI 翻译工具愈发普及。“浔川 AI 翻译”作为行业产品之一,为了解其市场表现与用户反馈,特开展本次问卷调查,现将关键结果汇报如下。 一、样本概…...
第一节、电路连接【51单片机-TB6600驱动器-步进电机教程】
摘要:本节介绍如何搭建一个51单片机TB6600驱动器步进电机控制电路,所用材料均为常见的模块,简单高效的方式搭建起硬件环境 一、硬件清单 ①51单片机最小控制系统 ②USB转TTL模块 ③开关电源 ④TB6600步进电机驱动器 ⑤二相四线步进电机 ⑥电…...
编程之路,从0开始:补充篇
Hello大家好!很高兴和大家又见面啦!给生活添点passion,开始今天的编程之路! 我的博客:<但凡. 我的专栏:《编程之路》、《题海拾贝》、《数据结构与算法之美》 欢迎点赞,关注! 这篇…...
<script src = “https://cdn.jsdelivr.net/npm/vue/dist/vue.js“></script>
这行代码是HTML中的一个<script>标签,用于在网页中嵌入Vue.js库。具体来说: <script>:是HTML中的一个标签,用于定义客户端的脚本,比如JavaScript。 src:是<script>标签的一个属性&#…...
RabbitMQ延时队列
RabbitMQ延时队列 什么是延时队列 延时队列顾名思义,即放置在该队列里面的消息是不需要立即消费的,而是等待一段时间之后取出消费。 应用场景 场景一:在订单系统中,一个用户下单之后通常有30分钟的时间进行支付,如…...
Java——异常机制(下)
1 异常处理之(捕获异常) (一般处理运行时异常) (try-catch-finally子句) (finally一般用于文件最后关闭) (catch捕获的子类在前父类在后——>不然父类在前面都让父类捕获掉了,会报错) (Exception是父类放在最后,如果前面没有捕获到,就…...
9. 一分钟读懂“策略模式”
9.1 模式介绍 策略模式是一种行为型设计模式,用于在运行时灵活切换对象的行为或算法,它将算法封装为独立的类,使得它们可以互相替换,而不会影响使用这些算法的客户端代码。 策略模式的核心思想是:定义一系列可互换的算…...
python调用GPT-4o实时音频 Azure OpenAI GPT-4o Audio and /realtime
发现这块网上信息很少,记录一下 微软azure入口 https://learn.microsoft.com/zh-cn/azure/ai-services/openai/realtime-audio-quickstart?pivotsprogramming-language-ai-studio sdk文档 https://github.com/azure-samples/aoai-realtime-audio-sdk?tabread…...
linux查看应用程序执行时间
命令 ps -eo pid,comm,lstart,etime,args | grep -i java ps:是查看进程状态的命令。-eo:是-e和-o参数的组合,-e表示显示所有进程,-o后面跟的是自定义输出格式。pid:表示进程ID。comm:表示命令名&#x…...
mybatis之数据统计与自定义异常处理
文章目录 需求描述定义实体方式一、mybatisPlus实现方式二、自定义SQL实现简单查询过滤查询 异常处理1、SQL拼写异常 在使用Mybatis或MybatisPlus进行数据统计,在【 SpringBoot的Mybatis-plus实战之基础知识】中对mybatisplus引入有介绍,本次要使用其进…...
Jenkins 中自定义Build History中显示构建信息
有时候会遇到一个代码仓库下面会有多个不同的分支,而这写分支表示着不同的开发者在开发新的需求,但是这样就会出现一个问题,在Jenkins上进行多分支构建的时候,很难找到哪一个是属于自己分支构建的,这样的问题大家应该都…...
安装certbot(ubuntu系统)
安装nginx 更新软件包列表 sudo apt update 更新软件包列表 sudo apt install nginx 更新软件包列表 sudo systemctl status nginx 注意:强烈推荐使用,系统直接安装nginx,(不推荐使用docker安装nginx)为后续更简单…...
QTextBrowser按照段落来显示html的文字
在 PyQt5 中,QTextBrowser 是一个用来显示富文本(如 HTML)内容的小部件。要让 QTextBrowser 按照段落来显示 HTML 内容,可以确保 HTML 中的每个段落被正确地封装在 <p> 标签中或其他合适的 HTML 标签中。 基本思路 HTML 格…...
如何让Google快速收录你的页面?
要让Google更快地收录你的网站内容,首先需要理解“爬虫”这个概念。Google的爬虫是帮助它发现和评估网站内容质量的工具,如果你的页面质量高且更新频率稳定,那么Google爬虫更可能频繁光顾。通常情况下,通过Google Search Console&…...
用Linux完成firewall-cmd配置防火墙
注意这里是openeuler的系统 假设在内网架设了一台Web服务器,IP地址是192.168.1.2,端口是80,设置内网网段192.168.1.0/24中的主机均可以访问此Web服务器,如图所示 步骤如下(包含结果) 这里再服务端(192.168.131.10)上配置&#x…...
关于光速的猜想
光速实际也可能是爱因斯坦制造出来的一个量,就像质量(重力mg,有这个关系在,m起的名字后来就演变成了质量)是牛顿造出的一个量,一个常量,刚开始都叫c,只是习以为常后起了个名字罢了&a…...
Mybatis-Flex的简单入门,Mybatis-Flex和其它框架对比
前言 最近做项目,项目组必须要用Mybatis-Flex,然后自己去学了一下,给大家进行分享。 MyBatis-Flex 是 MyBatis 的一个增强工具,旨在简化 MyBatis 的使用并提高开发效率。它通过提供一系列的便捷方法和特性来减少重复代码的编写&am…...
轻量化特征融合 | YOLOv11 引入一种基于增强层间特征相关性的轻量级特征融合网络 | 北理工新作
本改进已同步到Magic框架 摘要—无人机图像中的小目标检测由于分辨率低和背景融合等因素具有挑战性,导致特征信息有限。多尺度特征融合可以通过捕获不同尺度的信息来增强检测,但传统策略效果不佳。简单的连接或加法操作无法充分利用多尺度融合的优势,导致特征之间的相关性不…...
linux的磁盘管理
认识磁盘 从外到内,磁道从0~XXX。扇区默认512字节先读完一个柱面的0号磁道,接着读第二个柱面的0号磁道……直至所有柱面的0号磁道读写完毕,进入下一个磁道。 磁盘命名规则 物理磁盘:sd开头;虚拟磁盘vd开头 sdb1:第二…...
Alibaba EasyExcel 导入导出全家桶
一、阿里巴巴EasyExcel的优势 首先说下EasyExcel相对 Apache poi的优势: EasyExcel也是阿里研发在poi基础上做了封装,改进产物。它替开发者做了注解列表解析,表格填充等一系列代码编写工作,并将此抽象成通用和可扩展的框架。相对p…...
使用Scala编写一个简单的决策树分类测试demo
使用Scala编写一个简单的决策树分类测试demo,我们可以基于Apache Spark的MLlib库来实现。这里将展示如何创建一个简单的决策树分类器,并用它来进行预测。我们将遵循以下步骤: 设置环境和导入必要的包。加载并准备数据集。构建决策树模型。使…...
SQLServer中使用ISNULL替换为指定的替换值
ISNULL (Transact-SQL) 适用于: SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse Analytics 分析平台系统 (PDW)Microsoft Fabric 中的 SQL 分析端点Microsoft Fabric 中的仓库 NULL替换为指定的替换值。 1、语法 ISNULL ( check_expression , rep…...
69 mysql 中 is null 的实现
前言 Mysql 中我们偶尔会用到 字段为 NULL 的情况 这时候 我们只能使用查询 “select * from tz_test_02 where field1 is null;” 来进行 field1 字段为 null 的行的查询 然后如果是使用 “select * from tz_test_02 where field1 null;” 你会发现查询 不出数据 但是如…...
【信息系统项目管理师】第9章:项目范围管理-基础和过程 考点梳理
文章目录 9.1 管理基础9.1.1 产品范围和项目范围9.1.2 管理新实践 9.2 项目范围管理过程9.2.1 过程概述9.2.2 裁剪考虑因素9.2.3 敏捷与适应方法 【学习建议】本章节内容属于10大管理知识领域,选择、案例、论文都会考,建议重点学习。项目范围管理包括确保…...
智能制造标准体系建设指南
一、智能制造系统架构总览 智能制造作为当今制造业转型升级的核心,深度整合了新一代信息技术与传统制造工艺,催生出一个横跨产品全生命周期、纵贯多层级组织架构,并彰显多元智能特性的复杂系统。这一架构从生命周期、系统层级、智能特征三个…...
怎么获取键值对的键的数值?
问: 通过paelData.cardMap.C0002112可以获取到Cooo2112里面的数据,但是有时候接口返回的不是C0002112而是C0002093或者其他值,请问我该怎么写? 后端返回的数据是这样的: cardMap: { C0002112: { name: Item 1, va…...
反向代理后Request.Url.AbsoluteUri获取成了内网IP
出现的问题:用户请求的是域名,而后端通过Request.Url.AbsoluteUri获取用户请求的绝对路径时,变成了内网IP 解决方式: 反向代理配置中加上: proxy_set_header Host $host; # proxy_set_header Host h o s t : host: h…...
NLP论文速读(斯坦福大学)|使用Tree将语法隐藏到Transformer语言模型中正则化
论文速读|Sneaking Syntax into Transformer Language Models with Tree Regularization 论文信息: 简介: 本文的背景是基于人类语言理解的组合性特征,即语言处理本质上是层次化的:语法规则将词级别的意义组合成更大的成分的意义&…...
OpenCV-图像阈值
简单阈值法 此方法是直截了当的。如果像素值大于阈值,则会被赋为一个值(可能为白色),否则会赋为另一个值(可能为黑色)。使用的函数是 cv.threshold。第一个参数是源图像,它应该是灰度图像。第二…...
window系统,照片应用打开图片,但是提示操作系统找不到已输入的环境选项,请问怎么解决,以便能打开图片
文章目录 问题描述问题解决一、先用AI提问,看能否得到解答二、最终的解决方法-修改环境变量 至此问题解决。 问题描述 Windows中,使用默认的图片应用打开图片时,提示: 操作系统找不到已输入的环境选项如下图: 这个问…...
Excel之查找函数-XLOOKUP
背景: 某些数据处理,需要对比两个乱序或者数据不完全相同的数值,取到另外一个数据值,数据量大的情况下,人工对比太耗时,XLOOKUP函数是一个查找函数,可以通过遍历对比某一单元格的值,…...
深入理解 Java 内存管理:堆和栈
深入理解 Java 内存管理:堆和栈的全面解析 在 Java 编程语言中,内存管理是一个至关重要的概念,其中堆(Heap)和栈(Stack)是两个核心的内存区域。理解它们的工作原理、用途以及它们在程序执行过程…...
深度全解析开放开源大模型之BLOOM
BLOOM是 BigScience Large Open-science Open-access Mul-tilingual Language Model首字母的缩写。 BigScience 不是财团(consortium),也不是正式成立的实体。这是一个由HuggingFace、GENCI和IDRIS发起的开放式协作组织,以及一个…...
下载谷歌浏览器的官方离线安装包
网址:https://support.google.com/chrome/answer/95346?hlzh-Hans&coGENIE.Platform%3DDesktop#zippy%2Cwindows...
ORACLE创建用户报错ORA-65096: invalid common user or role name
在高版本的oracle中创建用户时提示错误ORA-65096: invalid common user or role name,官网说明用户名必须使用C##或c##开头。以下方法亲测有效。 通过设置"_ORACLE_SCRIPT"参数为true来临时绕过CDB中创建用户必须以"C##"开头的限制。请注意&…...
河工oj第七周补题题解2024
A.GO LecturesⅠ—— Victory GO LecturesⅠ—— Victory - 问题 - 软件学院OJ 代码 统计 #include<bits/stdc.h> using namespace std;double b, w;int main() {for(int i 1; i < 19; i ) {for(int j 1; j < 19; j ) {char ch; cin >> ch;if(ch B) b …...
运维大屏与设备仪表盘:打造高效运维管理的视觉中枢
在快速发展的信息化时代,运维行业面临着前所未有的挑战。随着业务规模的不断扩大和系统复杂度的日益增加,如何高效、准确地监控和管理设备运行状态,成为运维团队亟待解决的问题。运维大屏与设备仪表盘作为运维管理的重要工具,为运…...
计算机视觉与医学的结合:推动医学领域研究的新机遇
目录 引言医学领域面临的发文难题计算机视觉与医学的结合:发展趋势计算机视觉结合医学的研究方向高区位参考文章结语 引言 计算机视觉(Computer Vision, CV)技术作为人工智能的重要分支,已经在多个领域取得了显著的应用成果&…...
使用setsockopt函数SO_BINDTODEVICE异常,Protocol not available
前言 最近在使用OLT的DHCP Server的时候发现一些异常现象,就是ONU发的一个vlan的discover包其他不同vlan的DHCP地址池也会收到,导致其他服务器也发了offer包,ONU同时会有多个ip地址。一开始是没有使用SO_BINDTODEVICE,后面查到使…...
rpm包转deb包或deb包转rpm包
Debian系(Ubuntu、Deepin、麒麟Destop等)用的安装包是deb的,Red Hat系(CentOS、欧拉、麒麟Server等)用的安装包是rpm的。 如果需要在Ubuntu上安装rpm,或需要在CentOS上安装deb,需要安装alien s…...