首页 > 其他分享 >Three.js教程:三维坐标系

Three.js教程:三维坐标系

时间:2023-06-14 09:55:04浏览次数:46  
标签:教程 camera Three js 相机 mesh THREE 坐标系

推荐:将NSDT场景编辑器加入你的3D工具链
其他系列工具:NSDT简石数字孪生

三维坐标系

本节课的目的就是为了加强大家对threejs三维空间的认识。

辅助观察坐标系

THREE.AxesHelper()的参数表示坐标系坐标轴线段尺寸大小,你可以根据需要改变尺寸。

// AxesHelper:辅助观察的坐标系
const axesHelper = new THREE.AxesHelper(150);
scene.add(axesHelper);

材质半透明设置

设置材质半透明,这样可以看到坐标系的坐标原点。

const material = new THREE.MeshBasicMaterial({
    color: 0x0000ff, //设置材质颜色
    transparent:true,//开启透明
    opacity:0.5,//设置透明度
});

AxesHelper的xyz轴

three.js坐标轴颜色红R、绿G、蓝B分别对应坐标系的xyz轴,对于three.js的3D坐标系默认y轴朝上

设置模型在坐标系中的位置或尺寸

通过模型的位置、尺寸设置,加深3D坐标系的概念。

测试:设置长方体xyz不同方向尺寸

// 设置几何体长宽高,也就是x、y、z三个方向的尺寸
//对比三个参数分别对应xyz轴哪个方向
new THREE.BoxGeometry(100, 60, 20);

测试:改变位置

// 设置模型mesh的xyz坐标
mesh.position.set(100,0,0);

改变相机参数——预览新的渲染效果

你可以尝试源码中改变相机的参数,看看场景中的物体渲染效果怎么变化。

相机放在x轴负半轴,目标观察点是坐标原点,这样相当于相机的视线是沿着x轴正方向,只能看到长方体的一个矩形平面。

camera.position.set(-1000, 0, 0);
camera.lookAt(0, 0, 0);
// 相机视线沿着x轴负半轴,mesh位于相机后面,自然看不到
camera.position.set(-1000, 0, 0);
camera.lookAt(-2000, 0, 0);

相机far偏小,mesh位于far之外,物体不会显示在画布上。

// const camera = new THREE.PerspectiveCamera(30, width / height, 1, 3000);
// 你可以进行下面测试,改变相机参数,把mesh放在视锥体之外,看看是否显示
// 3000改为300,使mesh位于far之外,mesh不在视锥体内,被剪裁掉
const camera = new THREE.PerspectiveCamera(30, width / height, 1, 300);
视锥体 3D建模学习工作室    

上一篇:Three.js教程:渲染器 (mvrlink.com)

下一篇:Three.js教程:光源对物体表面影响 (mvrlink.com)

标签:教程,camera,Three,js,相机,mesh,THREE,坐标系
From: https://www.cnblogs.com/mvrlink/p/17479318.html

相关文章

  • javascript现代编程系列教程之二——IIFE
    IIFE(ImmediatelyInvokedFunctionExpression,立即执行函数表达式)是一个在定义后立即执行的JavaScript函数。它具有以下特点:是一个匿名函数:通常情况下,IIFE是一个没有名字的函数,称为匿名函数。立即执行:这个函数在声明后立即被调用并执行,而无需手动调用。创建局部作用域:它创建......
  • 再也不用担心变量类型错误!学会JS中如何轻松检查变量类型
    今天要分享的问题就是:如何在JS中检查一个变量的类型?先上结论:如果判断的是基本数据类型或JavaScript内置对象,使用toString;如果要判断的是自定义类型,请使用instanceof。在ECMAScript规范中,共定义了7种数据类型,分为基本类型和引用类型两大类。基本类型也称为简单类型,按......
  • javascript现代编程系列教程之一:区块作用域对VAR不起作用的问题
    在JavaScript中,使用var声明的变量具有函数作用域,而不是块级作用域。这意味着在一个函数内部,使用var声明的变量在整个函数范围内都是可见的,包括嵌套的块(如if语句、for循环等)。为了避免区块对var不起作用的问题,你可以采用以下方法:使用let和const代替var:从ECMAScript2015(ES6)开始,引......
  • 【原】iOSCoreAnimation动画系列教程(一):CABasicAnimation【包会】
    【原】iOSCoreAnimation动画系列教程(一):CABasicAnimation【包会】 在iOS中,图形可分为以下几个层次: 越上层,封装程度越高,动画实现越简洁越简单,但是自由度越低;反之亦然。本文着重介绍CoreAnimation层的基本动画实现方案。在iOS中,展示动画可以类比于显示生活中的“拍电影”。拍电影有......
  • json字符串解析 多语言替换
    importlombok.extern.slf4j.Slf4j;importorg.apache.commons.collections4.MapUtils;importorg.apache.commons.lang3.StringUtils;importorg.springframework.beans.factory.annotation.Value;importjava.util.HashSet;importjava.util.List;importjava.util.M......
  • 模块(os、json、pickle)
    os模块主要与操作系统打交道,是与操作系统交互的一个窗口1.os.mkdir('dirname')创建单级目录dirname2.os.makedirs('dirname1/dirname2')生成多层递归目录dirnmae1下的dirname23.os.rmdir('dirname')删除空白单级目录dirname,若dirname不为空则无法删除,并报错 ......
  • SM2258H固件开卡工具,SM2258H,SM2258G开卡教程,SM2256可参考
    如果你拆开固态,发现有一个芯片写着SM2258G或者SM2258H。那么,这篇教程可能适合你的固态。(前提是没有电气故障)一:需要使用合适的转接卡,推荐ASM1153E,兼容性最好(能直插sata最好了)二:使用金属镊子或者金属丝等导电的东西,短接电路板上的两个小孔(但通常都有很多的,先试试方形和圆形挨一起的两......
  • js Math
    JavaScript中的Math对象是一个数学库,提供了许多数学函数和常量,可以用于进行各种数学计算和运算。以下是Math对象的一些常用属性和方法:常量:Math.PI:圆周率。Math.E:自然对数的底数。数学函数:Math.abs(x):返回x的绝对值。Math.ceil(x):返回大于或等于x的最小整数。Math.fl......
  • PyCharm 安装教程
    1.下载进入PyCharm官方下载地址:https://www.jetbrains.com/pycharm/download/下载社区版本(日常学习使用够用了),专业版是收费的哦(功能更强大) 2.安装PyCharm(1)双击打开pycharm-community-2023.1.2.exe(2)点击Next (3)选择安装路径(尽量不要选择带中文和空格的目录)选择好路径后,点......
  • post、raw、json调用第三方接口
    1、调用第三方接口,对方接口文档写到”请求方式postjson格式、请求参数json格式“,看不懂,就用postMan试试看。发现只有一种方式能调用通, 2、 3、Content-Type:application/json  4、根据上面的方式,所有写了下面的方法:/****@paramurl接口地址*@paramputData......