当前位置: 首页 > news >正文

Three.js 设置模型材质纹理贴图和修改材质颜色,材质透明度,材质网格

相关API的使用:

1 traverse (模型循环遍历方法)

2. THREE.TextureLoader(用于加载和处理图片纹理)

3. THREE.MeshLambertMaterial(用于创建材质)

4. getObjectByProperty(通过材质的属性值获取材质信息)

在上一篇 Three.js加载外部glb,fbx,gltf,obj 模型文件 的文章基础上加入onSetSystemModelMap (设置模型材质方法)和onSetModelMaterial(设置材质属性方法)
首先在 setModel 方法里获取到当前模型所有的材质 (traverse

setModel({ filePath, fileType, scale,  position }) {return new Promise((resolve, reject) => {const loader = this.fileLoaderMap[fileType]loader.load(filePath, (result) => {//加载不同类型的文件switch (fileType) {case 'glb':this.model = result.scene		break;case 'fbx':this.model = resultbreak;case 'gltf':this.model = result.scenebreak;case 'obj':this.model = resultbreak;default:break;}this.model.traverse((v) => {const { uuid } = vif (v.isMesh &&  v.materia) {this.modelMaterialList.push(v)}})// 设置模型大小if (scale) {this.model.scale.set(scale, scale, scale);}// 设置模型位置 if (position) {const { x, y, z } = positionthis.model.position.set(x, y, z)}// 设置相机位置this.camera.position.set(0, 2, 6)// 设置相机坐标系this.camera.lookAt(0, 0, 0)// 将模型添加到场景中去   this.scene.add(this.model)resolve(true)}, () => {}, (err) => {console.log(err)reject()})})}

通过 getObjectByProperty 方法传入 uuid 获取到当前材质信息
设置模型贴图

	onSetSystemModelMap({ url }) {// 当前uuid const uuid = store.state.selectMesh.uuid// 通过uuid 获取需要设置的材质const mesh = this.scene.getObjectByProperty('uuid', uuid)const { name, color } = mesh.material// 获取到贴图 url(图片实际地址)const mapTexture = new THREE.TextureLoader().load(url)mesh.material = new THREE.MeshLambertMaterial({map: mapTexture,transparent: true, // 允许材质可透明color,name,})}

设置材质属性

	// 设置材质属性onSetModelMaterial(config) {const { color, wireframe, depthWrite, opacity } = configconst uuid = store.state.selectMesh.uuidconst mesh = this.scene.getObjectByProperty('uuid', uuid)if (mesh && mesh.material) {//设置材质颜色mesh.material.color.set(new THREE.Color(color))//设置网格mesh.material.wireframe = wireframe// 设置深度写入mesh.material.depthWrite = depthWrite//设置透明度mesh.material.transparent = truemesh.material.opacity = opacity}}

完整的代码可参考:https://gitee.com/ZHANG_6666/Three.js3D/blob/master/src/views/renderModel.js

界面效果:
在这里插入图片描述
在这里插入图片描述

相关文章:

Three.js 设置模型材质纹理贴图和修改材质颜色,材质透明度,材质网格

相关API的使用: 1 traverse (模型循环遍历方法) 2. THREE.TextureLoader(用于加载和处理图片纹理) 3. THREE.MeshLambertMaterial(用于创建材质) 4. getObjectByProperty(通过材…...

docker 安装mongodb 虚拟机安装mongodb

生产环境直接安装比较好,以及使用集群环境,本文仅测试交流使用,我用来写分布式im测试使用: nami-im: 分布式im, 集群 zookeeper netty kafka nacos rpc主要为gate(长连接服务) logic (业务&…...

在SockJS+Spring Websocket中convertAndSendToUser中的“用户”来自哪里?

目录 一、前言二、Principal三、使用 一、前言 我们知道可以使用客户端订阅的主题前缀从 stomp 服务器向客户端发送消息,例如 /topic/hello。我们还知道我们可以向特定用户发送消息,因为 spring 提供了convertAndSendToUser(username, destination, mes…...

【软件测试】我的2023面试经验谈

最近行业里有个苦涩的笑话:公司扛过了之前的三年,没扛过摘下最近的一年,真是让人想笑又笑不出来。年前听说政策的变化,大家都满怀希望觉得年后行情一片大好,工作岗位激增,至少能有更多的机会拥抱未来。然而…...

SpringBoot 整合JDBC

SpringData简介 Sping Data 官网:https://spring.io/projects/spring-data数据库相关的启动器 :可以参考官方文档:https://docs.spring.io/spring-boot/docs/2.6.5/reference/htmlsingle/#using-boot-starter 整合JDBC 创建测试项目测试数据…...

TypeScript使用npm安装报错问题

问题如图: 问题原因: 权限不足导致,可以输入如下命令: sudo npm install i -g typescript该命令会要求输入登录密码相关,稍等片刻,即可安装成功。检测安装的命令: tsc -v...

2023国赛数学建模思路 - 复盘:人力资源安排的最优化模型

文章目录 0 赛题思路1 描述2 问题概括3 建模过程3.1 边界说明3.2 符号约定3.3 分析3.4 模型建立3.5 模型求解 4 模型评价与推广5 实现代码 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 描述 …...

学习pytorch 3 tensorboard的使用

tensorboard的使用 1. 安装2. add_scalar 查看函数图形3. 查看结果4. add_image() 查看训练步骤中间结果的图片 1. 安装 pytorch conda环境 pip install tensorboard pip install opencv-python2. add_scalar 查看函数图形 常用来查看 train val loss等函数图形 from torch…...

Linux 命令篇

一、启动网络命令 ip addr 查看网卡信息 service network start 启动网卡 service network stop 关闭网卡 service network restart 重启网络 二、pwd 命令 查看当前目录的路径 linux 下所有的绝对路径都是从根目录 "/" 开始 root:是linux下root用户的根目…...

OpenCV-SIFT算法详解

系列文章目录 文章目录 系列文章目录引言一、高斯金字塔二、高斯差分金字塔三、特征点处理四、特征点描述子总结 引言 SIFT算法是为了解决图片的匹配问题,想要从图像中提取一种对图像的大小和旋转变化保持鲁棒的特征,从而实现匹配。这一算法的灵感也十分…...

Java中的接口到底是什么?

要说Java的【接口】,可以将其类比为现实生活中的一种约定或规范。在Java中,接口定义了一组方法的集合,但没有提供这些方法的具体实现。 你可以将接口看作是一个合同,它规定了一个类必须实现的一组方法。这些方法描述了类所需具备…...

Jpa与Druid线程池及Spring Boot整合(一): spring-boot-starter-data-jpa 搭建持久层

Jpa与Druid线程池及Spring Boot整合(一) Jpa与Druid线程池及Spring Boot整合(二):几个坑 附录官网文档:core.domain-events域事件 (一)Jpa与Druid连接池及Spring Boot整合作为持久层,遇到系列问题,下面一 一记录: pom.xml 文件中加入必须的…...

helm部署vmalert

先决条件 安装以下软件包:git, kubectl, helm, helm-docs,请参阅本教程。 在 CentOS 上启用 snap 并安装 helm 启用 snapd 使用以下命令将 EPEL 存储库添加到您的系统中: sudo yum install epel-release 按如下方式安装 Snap&#xff1…...

加工厂数字孪生3D可视化展示系统重塑管理模式

近年来“数字化转型”成立各行业聚焦的发展方向,在工业制造领域,智慧工业数字孪生可视化平台作为一种新型的技术手段,或将成为助力企业跑赢数字化转型最后一公里。 提高生产效率 传统的生产方式往往需要大量的人工干预,不仅耗时耗…...

php从静态资源到动态内容

1、从HTML到PHP demo.php:后缀由html直接改为php,实际上当前页面已经变成了动态的php应用程序脚本 demo.php: 允许通过<?php ... ?>标签,添加php代码到当前脚本中 php标签内部代码由php.exe解释, php标签之外的代码原样输出,仍由web服务器解析 <!DOCTYPE html>…...

JavaScript:模块化【CommonJS与ES6】

在 JavaScript 编程中&#xff0c;随着项目的复杂性增加&#xff0c;代码的组织和管理变得至关重要。模块化是一种强大的编程概念&#xff0c;它允许我们将代码划分为独立的模块&#xff0c;提高了可维护性和可扩展性。本文将详细介绍 CommonJS 和 ES6 模块&#xff0c;帮助你理…...

Redis—持久化

这里写目录标题 AOF三种写回策略写回策略的优缺点AOF 重写机制AOF后台重写AOF优缺点使用命令 RDBRDB 持久化的工作原理执行快照时&#xff0c;数据能被修改吗RDB 持久化的优点RDB 持久化的缺点 混合持久化大key对持久化的影响 AOF 保存写操作命令到日志的持久化方式&#xff0…...

【设计模式】代理模式

在代理模式&#xff08;Proxy Pattern&#xff09;中&#xff0c;一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。 在代理模式中&#xff0c;我们创建具有现有对象的对象&#xff0c;以便向外界提供功能接口。 介绍 意图&#xff1a;为其他对象提供一种代理以…...

mac arm 通过brew搭建 php+nginx+mysql+xdebug

1.安装nginx brew install nginx //安装brew services start nginx //启动2.安装php brew install php7.4 //安装export PATH"/opt/homebrew/opt/php7.4/bin:$PATH" //加入环境变量 export PATH"/opt/homebrew/opt/php7.4/sbin:$PATH"brew serv…...

软信天成:告别手动编码,实现智能自动化云数据管理

数字化转型浪潮之下&#xff0c;各个企业都在大力投资新的基于云的流程、平台和环境&#xff0c;以期获取可扩展性、弹性、敏捷性和成本效益等优势。 这些趋势要求企业IT部门能够帮助组织&#xff0c;在对分析进行现代化改造的过程中达到云就绪或云优先状态。事实上&#xff0…...

智慧教室整体建设服务商怎么选?广凌股份给出四大参考

“设备装上了&#xff0c;老师不会用&#xff1b;系统对接了&#xff0c;数据不通&#xff1b;项目验收了&#xff0c;后续没人管。”在2026年教育信息化论坛上&#xff0c;一位高校信息化负责人的这番话引发了不少共鸣。智慧教室建设已进入深水区&#xff0c;选择一家可靠的智…...

如何批量创建SQL存储过程_使用脚本自动化部署流程

最稳妥的批量建存储过程方法是&#xff1a;SQL Server用sp_executesql逐个执行CREATE OR ALTER PROCEDURE&#xff1b;PostgreSQL用DO块pg_proc校验后EXECUTE&#xff1b;MySQL避免DELIMITER误替换&#xff0c;改用客户端分隔符控制。SQL Server 里用 sp_executesql 动态生成存…...

为资源管理器文件右键菜单增加 使用 Web 搜索 功能

欢迎使用右键搜。这是一个使用 Autoit v3 编写的右键菜单增强小插件&#xff0c;用于在资源管理器文件右键菜单中增加一键搜索&#xff0c;让您快速调用在线搜索引擎查找与此文件相关的信息。 在整理文件时&#xff0c;经常需要上网搜一下某个文件的背景资料、相关信息。虽然“…...

台达PLC伺服追剪程序及电子凸轮技术,含DVP15MC源代码与触摸屏程序一体化解决方案

台达PLC伺服追剪程序&#xff0c;电子凸轮&#xff0c;全部源代码&#xff0c;PLC程序和触摸屏程序&#xff0c;DVP15MC。最近在搞台达PLC的追剪项目&#xff0c;发现里面电子凸轮的设计挺有意思。直接上干货&#xff0c;咱们先看这个追剪系统的核心逻辑——电子凸轮的参数配置…...

MMC-HVDC仿真模型及柔性直流输电相关基础模型集合

MMC-HVDC仿真模型&#xff0c;pscad柔性直流输电仿真mmc仿真模型&#xff0c;双端mmc模型&#xff0c;MMC为21电平NLM和均压控制&#xff0c;还有多端如张北直流电网以及基本mmc逆变器&#xff0c;自己为毕业网上收集的一些觉得有用的基础模型最近在折腾MMC-HVDC仿真&#xff0…...

Vue——Vue 面包屑导航实现

背景问题&#xff1a; 需要实现页面面包屑导航。 方案思考&#xff1a; 根据当前路由路径生成面包屑。 具体实现&#xff1a; 面包屑组件&#xff1a; <!-- components/Breadcrumb.vue --> <template><el-breadcrumb class"app-breadcrumb" separa…...

Argo Events 高级过滤技巧:数据过滤、上下文过滤和时间过滤的完整指南

Argo Events 高级过滤技巧&#xff1a;数据过滤、上下文过滤和时间过滤的完整指南 【免费下载链接】argo-events Event-driven Automation Framework for Kubernetes 项目地址: https://gitcode.com/gh_mirrors/ar/argo-events Argo Events 是 Kubernetes 生态系统中强大…...

别只用AI写脚本了,现在AI打广告可真是城会玩了!

金磊 发自 凹非寺量子位 | 公众号 QbitAI咱就是说啊&#xff0c;现在的广告可真是城会玩了——像下面这个再正常不过的短视频剧情&#xff0c;当镜头切到宝宝喝牛乳的时候&#xff0c;啪的一下&#xff0c;左下角就精准弹出了奶粉广子&#xff1a;以为这是人为提前设置好的&…...

【技术前沿】大模型驱动的无损数据压缩:突破传统极限的新范式

1. 大模型如何重新定义数据压缩的极限 十年前我第一次接触数据压缩技术时&#xff0c;被那些复杂的数学公式和编码规则搞得晕头转向。当时使用的还是基于香农信息论的传统方法&#xff0c;虽然效果不错&#xff0c;但总觉得遇到了某种看不见的天花板。直到最近看到LMCompress这…...

echarts-gl 网络图布局算法:ForceAtlas2 GPU 加速原理详解

echarts-gl 网络图布局算法&#xff1a;ForceAtlas2 GPU 加速原理详解 【免费下载链接】echarts-gl Extension pack for Apache ECharts, providing globe visualization and 3D plots. 项目地址: https://gitcode.com/gh_mirrors/ec/echarts-gl Apache ECharts GL 作为…...