three.js 入门四:THREE.BoxGeometry 解析

news2024/9/22 23:27:00

环境:

  • three.js 0.159.0

问题:如何理解BoxGeometry?

BoxGeometry在创建的时候, 内部划分成了6个小组, 每个小组就是一个面有4个点, 假设长宽深的segments都是1的话(默认是1), 那么每个小组拥有2个三角面, 如下面创建的代码:

var geometry = new THREE.BoxGeometry(100, 100, 100, 1, 1, 1);
// geometry.attributes.position: 这里面有24个点, 每个面4个点
// 注意: 虽然8个点也能表示了, 但分开后的好处是, 每个面的顶点可以单独设置uv值

//geometry.attributes.uv: 这里面有24个uv值, 与上面的点一一对应

//geometry.attributes.normal: 这里面也有24个值, 与上面的点一一对应

//geometry.index: 这面有36个点位索引, 共12个三角面, 12*3 = 36

// geometry.groups 如下: 
// 0: {start: 0, count: 6, materialIndex: 0}
// 1: {start: 6, count: 6, materialIndex: 1}
// 2: {start: 12, count: 6, materialIndex: 2}
// 3: {start: 18, count: 6, materialIndex: 3}
// 4: {start: 24, count: 6, materialIndex: 4}
// 5: {start: 30, count: 6, materialIndex: 5}
// 这里面表示将 geometry.index 分成了6组, 每组6个, 前六后点位索引使用材质1, 后面六个使用材质2, 后面依次

问题: BoxGeomtry 六个小组分别表示哪个侧面?

顺序是:

  • 右: normal:(1,0,0)
  • 左: normal:(-1,0,0)
  • 上: normal:(0,1,0)
  • 下: normal:(0,-1,0)
  • 前: normal:(0,0,1)
  • 后: normal:(0,0,-1)

对于每个小组, 他们的每个点的uv值是多少呢?

分别用六张图片贴上去就能很明显的看出来:

 let boxGeometry = new THREE.BoxGeometry(200, 200, 200);
 //全景图切六面图示例
 let materials = ['r', 'l', 'u', 'd', 'f', 'b'].map(i => `panorama_${i}.jpg`).map(i => {
     const texture = new THREE.TextureLoader().load(i);
     texture.wrapS = texture.wrapT = THREE.RepeatWrapping;
     texture.repeat.set(1, 1);
     //准备material
     return new THREE.MeshBasicMaterial({
         side: THREE.DoubleSide,
         map: texture,
         transparent: true,
         opacity: 0.8,
     });
 });
 let mesh = new THREE.Mesh(boxGeometry, materials);
 scene.add(mesh);

效果如下:
在这里插入图片描述
在这里插入图片描述

代码在上方下载链接。

关于 new BoxGeometry(width,height,depth) 的参数怎么理解?

  • width 表示 x 轴上的长度
  • height 表示 y 轴上的长度
  • depth 表示 z 轴上的长度

如设置为new THREE.BoxGeometry(100, 200, 300)的效果如下:
在这里插入图片描述

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

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

相关文章

AI智能分析网关V4烟火识别技术在沿街商铺消防安全管理中的应用

一、背景需求 2024年3月13日,廊坊三河市燕郊镇一炸鸡店发生疑似燃气泄漏引发的爆燃事故,应急、消防、卫健等有关部门第一时间赶赴现场全力救援处置。目前现场搜救工作已经结束,事故善后处置、原因调查等工作正在进行中。本次事故也引发了社会…

AI-逻辑回归模型

😆😆😆感谢大家的支持~😆😆😆 逻辑回归的应用场景 逻辑回归(Logistic Regression)是机器学习中的 一种分类模型 ,逻辑回归是一种分类算法,虽然名字中带有回…

家具销售电商平台|基于springboot框架+ Mysql+Java+Tomcat的家具销售电商平台设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 用户功能模块 管理员功能登录前台功能效果图 系统功能设计 数据库E-R图设计 lunwen…

CXL-Enabled Enhanced Memory Functions——论文阅读

IEEE Micro 2023 Paper CXL论文阅读笔记整理 问题 计算快速链路(CXL)协议是系统社区的一个重要里程碑。CXL提供了标准化的缓存一致性内存协议,可用于将设备和内存连接到系统,同时保持与主机处理器的内存一致性。CXL使加速器&…

瑞_23种设计模式_策略模式

文章目录 1 策略模式(Strategy Pattern)★1.1 介绍1.2 概述1.3 策略模式的结构1.4 策略模式的优缺点1.5 策略模式的使用场景 2 案例一2.1 需求2.2 代码实现 3 案例二3.1 需求3.2 代码实现 4 JDK源码解析(Comparator) &#x1f64a…

Flutter学习笔记---flutter环境搭建以及dart语法的学习

Flutter笔记 Flutter环境搭建 获取 Dart SDK | Dart dart-pub | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror Flutter、Dart SDK镜像资源 - 掘金 (juejin.cn) Index of /flutter/dart-archive/channels/stable/release/3.2.6/sdk/ | 清华大学…

优思学院|质量管理方面的证书有哪些?

在这个迅速变化的时代,每个行业都在寻找方法来提高效率、质量和生产力。 对于那些刚踏入或有兴趣深入探索质量管理领域的朋友们来说,一个常见的疑问浮现:为了提升自己的专业技能和职业前景,应该考取哪些证书? 在这方…

OS---python中OS模块的相关学习总结

介绍 在Python中,os模块是一个与操作系统交互的标准库,提供了许多用于文件和目录操作、进程管理、环境变量等功能。下面是os模块中一些常用的功能和方法: 用法 1.查看os模块内容(import os print(dir(os)) ) 结果如下: [Dir…

Windows客户端漏洞挖掘(红队角度)

0x01 前言 周五的时候看了key佬的演讲受益良多呀,来水水,写下目前针对Windows客户端类程序的部分挖掘入口吧,然后分享一下随手挖的很简单很简单的案例。 传统客户端 监听类的: 这里说的监听类的,指的就是安装客户端后启动的端口…

爬虫练习:获取某招聘网站Python岗位信息

一、相关网站 二、相关代码 import requests from lxml import etree import csv with open(拉钩Python岗位数据.csv, w, newline, encodingutf-8) as csvfile:fieldnames [公司, 规模,岗位,地区,薪资,经验要求]writer csv.DictWriter(csvfile, fieldnamesfieldnames)writer…

Halcon绘制图形

1、ROI是Halcon中的一个很重要的概念,为了减少计算量,只关注待检测物体或该物体周围的一片区域即可(类似于图片裁剪) * ROI是Halcon中的一个很重要的概念,为了减少计算量,只关注待检测物体或该物体周围的一片区域即可&#xff0c…

嵌入式方向还有希望吗?

我刚开始学习,也不知道我定位的是单片机工程师,嵌入式工程师职位的。 我只知道电子工程师,这个职位其实偏硬件,很多岗位需求是硬件设计,PCB设计,还要懂焊接、各种仪器仪表使用,还有些需要懂单片…

[Redis]——主从同步原理(全量同步、增量同步)

目录 Redis集群: 主从同步原理: replid和offset: 全量同步和增量同步: repl_baklog文件: 主从集群的优化: Redis集群: 部署多台Redis我们称之为Redis集群,他有一个主节点(负责写操作)&…

List(CS61B学习记录)

问题引入 上图中,赋给b海象的weight会改变a海象的weight,但x的赋值又不会改变y的赋值 Bits 要解释上图的问题,我们应该从Java的底层入手 相同的二进制编码,却因为数据类型不同,输出不同的值 变量的声明 基本类型…

【数据结构和算法初阶(C语言)】栈的概念和实现(后进先出---后来者居上的神奇线性结构带来的惊喜体验)

目录 1.栈 1.1栈的概念及结构 2.栈的实现 3.栈结构对数据的处理方式 3.1对栈进行初始化 3.2 从栈顶添加元素 3.3 打印栈元素 3.4移除栈顶元素 3.5获取栈顶元素 3.6获取栈中的有效个数 3.7 判断链表是否为空 3.9 销毁栈空间 4.结语及整个源码 1.栈 1.1栈的概念及结构 栈&am…

电力运维物联网平台

我们构建软硬件结合的生态系统,打造电力设备9物联平台,实现软件、硬件、平台、云数据一体化。 在硬件领域通过自主研发推出了一系列电力领域的硬件设备,包括:智能电力测控终端、智能电力采集终端等产品。在软件领域,我们搭…

韩国大带宽服务器的数据中心位置

很多用户会选择韩国大宽带服务器,那么韩国大带宽服务器的数据中心位置在哪,rak小编为您整理发布韩国大带宽服务器的数据中心位置。 韩国大带宽服务器的数据中心通常位于**首尔及其周边地区**。 韩国因其地理位置的优势,拥有丰富的网络带宽资源…

【智能算法】白鲨算法(AVOA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.代码实现4.参考文献 1.背景 2022年,Braik 等人受到白鲨捕食行为启发,提出了非洲秃鹫优化算法(White Shark Optimizer, WSO)。 2.算法原理 2.1算法思想 海洋中白鲨拥有敏锐的感知、听觉和嗅觉&#xf…

【竞技宝】LOL:sheer对位压制369 JDG鏖战三局力克TES

北京时间2024年3月15日,英雄联盟LPL2024春季常规赛继续进行,昨日共进行三场比赛,第三场比赛由TES对阵JDG。本场比赛前两局双方战至1-1平,决胜局JDG前期就打出完美节奏,中期两次团灭TES后轻松取胜,最终JDG鏖战三局击败TES。以下是本场比赛的详细战报。 第一局: TES:鳄鱼、盲僧、…

九千元家用投影仪怎么样:当贝X5 Ultra万元内天花板配置

投影仪市场正在最贱扩大,越来越的投影品牌纷纷加入市场,一方面可以促成市场的发展,但是宁一方面,市场的乱象也在不断扩大。对于数码新手来说选择一款适合的投影仪变成了一件难事,太多的品牌和产品不知道该如何选择&…