【技术调研】三维(3)-ThreeJs-几何体、材质、贴图、灯光及案例

几何体

​ 几何体是构建模型的基础,模型=几何体+材质。threejs中已内置了很多几何体。这里不一一介绍。

在这里插入图片描述

BufferGeometry

是面片、线或点几何体的有效表述。包括顶点位置,面片索引、法相量、颜色值、UV 坐标和自定义缓存属性值。使用 BufferGeometry 可以有效减少向 GPU 传输上述数据所需的开销。

BufferGeometry是一个没有任何形状的空几何体,通过定义顶点数据将BufferGeometry自定义为任何几何形状。类似于webGL中通过点来绘制几何体。

材质

​ 材质描述了物体的外观。材质的属性(以MeshBasicMaterial为例):

.alphaMap : Texture
alpha贴图是一张灰度纹理,用于控制整个表面的不透明度。(黑色:完全透明;白色:完全不透明)。 默认值为null。仅使用纹理的颜色,忽略alpha通道(如果存在)。 对于RGB和RGBA纹理,WebGL渲染器在采样此纹理时将使用绿色通道, 因为在DXT压缩和未压缩RGB 565格式中为绿色提供了额外的精度。 Luminance-only以及luminance/alpha纹理也仍然有效。.aoMap : Texture
该纹理的红色通道用作环境遮挡贴图。默认值为null。aoMap需要第二组UV。.aoMapIntensity : Float
环境遮挡效果的强度。默认值为1。零是不遮挡效果。.color : Color
材质的颜色(Color),默认值为白色 (0xffffff)。.combine : Integer
如何将表面颜色的结果与环境贴图(如果有)结合起来。选项为THREE.MultiplyOperation(默认值),THREE.MixOperation, THREE.AddOperation。如果选择多个,则使用.reflectivity在两种颜色之间进行混合。.envMap : Texture
环境贴图。默认值为null。.fog : Boolean
材质是否受雾影响。默认为true。.lightMap : Texture
光照贴图。默认值为null。lightMap需要第二组UV。.lightMapIntensity : Float
烘焙光的强度。默认值为1。.map : Texture
颜色贴图。可以选择包括一个alpha通道,通常与.transparent 或.alphaTest。默认为null。.reflectivity : Float
环境贴图对表面的影响程度; 见.combine。默认值为1,有效范围介于0(无反射)和1(完全反射)之间。.refractionRatio : Float
空气的折射率(IOR)(约为1)除以材质的折射率。它与环境映射模式THREE.CubeRefractionMapping 和THREE.EquirectangularRefractionMapping一起使用。 The index of refraction (IOR) of air (approximately 1) divided by the index of refraction of the material. It is used with environment mapping mode THREE.CubeRefractionMapping. 折射率不应超过1。默认值为0.98。.specularMap : Texture
材质使用的高光贴图。默认值为null。.wireframe : Boolean
将几何体渲染为线框。默认值为false(即渲染为平面多边形)。.wireframeLinecap : String
定义线两端的外观。可选值为 'butt','round' 和 'square'。默认为'round'。该属性对应2D Canvas lineJoin属性, 并且会被WebGL渲染器忽略。.wireframeLinejoin : String
定义线连接节点的样式。可选值为 'round', 'bevel' 和 'miter'。默认值为 'round'。该属性对应2D Canvas lineJoin属性, 并且会被WebGL渲染器忽略。.wireframeLinewidth : Float
控制线框宽度。默认值为1。

​ 一些常用的材质:

材质描述受光照影响特点
MeshBasicMaterial基础光照模型×
MeshLambertMaterialLambert光照模型(漫反射)
MeshPhongMaterialPhong光照模型(漫反射、高光反射)
MeshStandardMaterial基于物理的光照模型(PBR物理材质),可以提供更加真实的材质效果物理网格材质使用了更复杂的着色器功能,大部分的特性是默认关闭的,需要手动开启。
MeshPhysicalMaterial属于PBR物理材质(基于物理的渲染physically-based rendering),可以提供更加真实的材质效果MeshPhysicalMaterialMeshStandardMaterial的扩展子类

官网材质相关内容:

在这里插入图片描述

贴图

​ 可以理解为“皮肤”,一些常用的贴图:

  • 纹理贴图: 即常规颜色贴图,具体见官网map
  • 环境光贴图:用于模拟物体表面环境光的遮蔽效果,具体见官网aoMap
  • 法线贴图:具体见官网normalMap
  • 粗糙度贴图:具体见官网roughnessMap
  • 高度贴图:具体见官网displacementMap

灯光

​ 使用Light模拟光照对网格模型mesh(物体表面)的影响,如果使用受光照影响的材质,在不开灯的情况下是看不见的。

环境光AmbientLight

环境光AmbientLight没有特定方向,整体改变场景的光照,会均匀的照亮场景中的所有物体。因为没有方向,所以不能用来投射阴影。

语法:AmbientLight( color : Color, intensity : Float )

  • color 可选,光源颜色,默认白色
  • intensity 可选,光照的轻度,默认值为1
//环境光:没有特定方向,整体改变场景的光照明暗
const ambient = new THREE.AmbientLight(0xffffff, 0.4);
scene.add(ambient);

平行光

语法:DirectionalLight( color : Color, intensity : Float )

  • color 可选,光源颜色,默认白色
  • intensity 可选,光照的强度默认值为 1。

平行光的方向是一个矢量,平行光的属性如下:<

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

报名开启!第七届“强网”拟态防御国际精英挑战赛正式官宣

向新向未来&#xff0c;顶赛启新篇&#xff01;第七届“强网”拟态防御国际精英挑战赛正式官宣&#xff0c;暂定于2024年11月18日至21日在南京举办。 本届大赛旨在促进内生安全理念和技术在实践中的应用&#xff0c;吸引更多数字化产业加入内生安全产业生态圈&#xff0c;推动…

基于C++实现(MFC)职工工作量统计系统

题目&#xff1a;职工工作量统计系统设计 1、问题描述 职工包括姓名、职工号、性别、年龄、所在部门、联系方式等信息。 工作量包括职工号、完成的产品数量等信息。 该设计系统能够对职工的工作量进行统计&#xff0c;并排出名次。注意&#xff0c;一个职工的工作量是可以多次…

微信支付开发-前端api实现

一、操作流程图 二、代码实现 <?php /*** 数字人答题业务流* User: 龙哥三年风水* Date: 2024/9/11* Time: 14:59*/ namespace app\controller\shuziren; use app\controller\Base; use app\model\param\QuestionParam as PQPModel; use app\model\answer\QuestionBank; u…

【Java】【力扣】83.删除排序链表中的重复元素

题目 给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只出现一次 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,1,2] 输出&#xff1a;[1,2]示例 2&#xff1a; 输入&#xff1a;head [1,1,2,3,3] 输出&#…

电脑录屏工具哪个好用?推荐新手几款实用工具介绍

现在不管是录个教学视频教教别人&#xff0c;还是直播游戏给粉丝看&#xff0c;或者是展示你的产品&#xff0c;都得用到它。但是市面上的录屏软件多得让人眼花缭乱&#xff0c;新手可能一看就懵了。别急&#xff0c;今天我就给你介绍几个特别好用的电脑录屏工具&#xff0c;不…

Java之线程篇四

目录 volatile关键字 volatile保证内存可见性 代码示例 代码示例2-&#xff08;volatile&#xff09; volatile不保证原子性 synchronized保证内存可见性 wait()和notify() wait()方法 notify() 理解notify()和notifyAll() wait和sleep的对比 volatile关键字 volati…

国家标准参编周期一般是多久?参编的流程有哪些?

在当今快速发展的时代&#xff0c;标准的重要性日益凸显。国家标准作为规范行业发展、保障产品质量、促进技术进步的重要依据&#xff0c;吸引着众多企业积极参与其中。而国家标准参编&#xff0c;为企业提供了一个提升自身竞争力、展示技术实力的良好平台。那么&#xff0c;国…

第k个排列 - 华为OD统一考试(E卷)

2024华为OD机试&#xff08;E卷D卷C卷&#xff09;最新题库【超值优惠】Java/Python/C合集 题目描述 给定参数n&#xff0c;从1到n会有n个整数:1,2,3,.,n&#xff0c;这n个数字共有 n!种排列。按大小顺序升序列出所有排列情况&#xff0c;并-一标记&#xff0c;当n3时,所有排列…

vscode任务配置之tasks.json

目录 用途说明 用途1&#xff1a;配置编译任务 1.生成task.json文件 2.编辑task.json文件 3.运行任务 用途2&#xff1a;给一个脚本文件配置任务 1.生成task.json文件 2.编辑task.json文件 3.运行任务 用途说明 在VS Code中配置任务主要涉及到task.json文件的编辑&am…

Java学习Day42:骑龙救!(springMVC)

springMVC与sevlet都是对应表现层web的&#xff0c;但是越复杂的项目使用SpringMVC越方便 基于Java实现MVC模型的轻量级web框架 目标&#xff1a; 小案例&#xff1a; 1.导入依赖 spring-context: 提供 Spring 框架的核心功能&#xff0c;如依赖注入、事件发布和其他应用上…

面试真题-TCP的三次握手

TCP的基础知识 TCP头部 面试题&#xff1a;TCP的头部是多大&#xff1f; TCP&#xff08;传输控制协议&#xff09;的头部通常是固定的20个字节长&#xff0c;但是根据TCP选项&#xff08;Options&#xff09;的不同&#xff0c;这个长度可以扩展。TCP头部包含了许多关键的字…

ollama安装(ubuntu20.04)

Ollama是一款开源的自然语言处理工具&#xff0c;它可以帮助开发者快速构建文本处理应用。 ollama官网: https://ollama.ai/ 一、ollama 自动安装 linux统一采用sh脚本安装&#xff0c;一个命令行搞定。 curl -fsSL https://ollama.com/install.sh | sh二、ollama 手动安装 o…

ros学习笔记.4 Path Planning Part 2 (避障)

避障是如何工作的什么是局部规划器&#xff1f;什么是局部成本图&#xff1f;路径规划回顾如何使用动态重新配置和其他 Rviz 工具 局部规划器 一旦全局规划器计算出要遵循的路径&#xff0c;该路径就会发送给局部规划器。然后&#xff0c;局部规划器将执行全局规划的每个部分&…

spring中对于servlet API的封装---springWeb

目录 一.springweb概述 二.springweb的特点 三.springweb的运行流程 四.springweb组件 五.springweb的搭建 1.导包 2.配置 DispatcherServlet 3.开启 springweb 注解 4.处理器的搭建 六.springweb注解 七.springweb拦截器 1.拦截器概述 2.拦截器的实现 (1)添加 servelt api 依赖…

详解:冒泡排序

1.是什么 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法。它重复地遍历要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换&#xff0c;也就是说该数列已经排序完成…

望繁信科技携流程智能解决方案亮相CNDS 2024新能源产业数智峰会

9月13日&#xff0c;CNDS 2024中国新能源产业数智峰会在北京圆满落幕。本次峰会以“走向数字新能源”为主题&#xff0c;汇聚了来自新能源领域的顶尖领袖、专家学者及知名企业代表&#xff0c;共同探讨数字化技术在新能源行业中的创新应用和发展趋势。上海望繁信科技有限公司&a…

C++ List (带你一篇文章搞定C++中的List类)

感谢大佬的光临各位&#xff0c;希望和大家一起进步&#xff0c;望得到你的三连&#xff0c;互三支持&#xff0c;一起进步 数据结构习题_LaNzikinh篮子的博客-CSDN博客 初阶数据结构_LaNzikinh篮子的博客-CSDN博客 收入专栏&#xff1a;C_LaNzikinh篮子的博客-CSDN博客 其他专…

flask项目初始化

1、初始环境 python3.8 2、flask文档地址&#xff1a;https://flask.palletsprojects.com/en/latest/installation/#install-flask 3、初始化项目 $ mkdir myproject $ cd myproject $ python3 -m venv .venv $ . .venv/bin/activate $ pip install Flask4、打开项目mypr…

Pycharm出现Please specify a different SDK name报错,但是看不到重名环境解决方案

这句话的意思是出现了重名的环境 &#xff0c;一般情况下删除重名的环境即可解决问题。做法如下图所示 1&#xff0c;点击右上角齿轮→settings&#xff08;或者File→settings&#xff09;进入Python Interpreter 2.点击这个沙漏按键&#xff0c;你会发现多了几个环境&#x…

VScode相关问题与解决

VScode只是一个文档编辑器&#xff0c;类似于我们使用的记事本。我们在编辑完文档之后呢一定要保存。 文档编辑器加上它可以安装不同的插件&#xff0c;就可以进行程序开发。 1.写c文件时找不到头文件stdio.h 在linux下我们gcc命令来编译c文件时&#xff0c;会遇到找不到头文…