【threejs】较大物体或shape的贴图较小问题处理方法

问题

有的场景内相对体型差距过大的物体(如山地 海洋等····)由于尺寸问题,加载贴图过于小,同时shader也无法完全展示,如图
在这里插入图片描述

我们可以获取物体的uv,进行缩放使得贴图可以完全展开
如果uv是乱的 可以用xyz坐标最大最小值先排布uv再对uv进行缩放

在这里插入图片描述

//假设你有一个 mest.geometry(物体网格)let max = { x: 10000, y: 10000, z: 10000 }let min = { x: 30000, y: 30000, z: 30000 }let positions = geometry.getAttribute('position').array.map((item, index) => {let axis = index % 3switch (axis) {case 0:return item - min.xbreak;case 1:return item - min.ybreak;case 2:return item - min.zbreak;default:break;}})let uv_ = []let _X = max.x - min.xlet _Y = max.y - min.ylet _Z = max.z - min.zfor (let i = 0; i < positions.length / 3; i++) {let x = positions[i * 3]let y = positions[i * 3 + 1]let z = positions[i * 3 + 2]let _u = x / _Xlet _v = z / _Z// 或者你的高度轴是y//  _v = y/_Yuv_.push(_u, _v)}let uvs = uv_.map(item=>item*scale)//缩放// 只是改原始模型uv比例 let uvs = geometry.getAttribute('uv').array.map(item => item / 500)//缩放uv// uv传给geometry(网格)geometry.setAttribute('uv', new Float32BufferAttribute(uvs, 2))
```# 效果
```javascript
//我这里只是进行uv缩放const mesh = new Mesh(geometry, mat)// mesh.position.setZ(-this.lineTick)mesh.position.set(startX, startY, - this.lineTick)// console.log(geometry);let uvs = geometry.getAttribute('uv').array.map(item => item / 500)//缩放geometry.setAttribute('uv', new Float32BufferAttribute(uvs, 2))mesh.scale.set(scale, scale, 1)return mesh
```
贴图完全展开了

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

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

相关文章

【Redis】MISCONF Redis is configured to save RDB snapshots报错解决方案

【Redis】MISCONF Redis is configured to save RDB snapshots报错解决方案 大家好 我是寸铁&#x1f44a; 总结了一篇【Redis】MISCONF Redis is configured to save RDB snapshots报错解决方案✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言 今天在登录redis时&#xff0c…

matlab函数化简和函数极限

文章目录 化简求函数极限泰勒公式泰勒公式求解 化简 simplify 函数是MATLAB中符号计算工具箱提供的一个函数&#xff0c;用于简化数学表达式。它可以根据预定义的简化规则&#xff0c;对给定的数学表达式进行简化和转化。 以下是simplify 函数的一些常用用法&#xff1a; 简…

[蓝桥杯 2022 省 B] 李白打酒加强版

题目链接 [蓝桥杯 2022 省 B] 李白打酒加强版 题目描述 话说大诗人李白&#xff0c;一生好饮。幸好他从不开车。 一天&#xff0c;他提着酒壶&#xff0c;从家里出来&#xff0c;酒壶中有酒 2 2 2 斗。他边走边唱&#xff1a; 无事街上走&#xff0c;提壶去打酒。 逢店加一倍…

python_绘图_多条折线图绘制_显示与隐藏

1. 需求 给定一个二维数组 100行, 5列, 每一列绘制一条折线, 横轴为行索引, 纵轴为对应位置的值, 绘制在一个子图里面, 使用python plot, 使用随机颜色进行区别添加显示和隐藏按钮, 可以对每条折线进行显示和隐藏 2. 代码 import numpy as np import matplotlib.pyplot as p…

为什么说FMEA是最主要的可靠性设计工具?——FMEA软件

免费试用FMEA软件-免费版-SunFMEA FMEA&#xff0c;即故障模式与影响分析&#xff08;Failure Modes and Effects Analysis&#xff09;&#xff0c;是一种预防性的质量工具&#xff0c;广泛应用于各种工程领域&#xff0c;特别是在产品设计和制造过程中。它通过对产品或过程中…

工具_git提交时忽略某些文件或者目录,git提交排除某些文件或目录

git 提交时如果想忽略某些文件或者目录&#xff1a; 1.在根目录下创建 .gitignore 文件 2.在该文件中直接添加内容&#xff0c;如&#xff1a; 忽略.mdb、.sln、.sln,.config 文件&#xff0c;不忽视 .txt 文件 *.mdb *.ldb *.sln .config !.txt 忽略Debug目录及文件&#…

4月2日 qt密码生成小程序(可选择生成密码的格式),基于Python框架下的pyqt6

4月2日 密码生成小程序 代码展示&#xff1a; import stringfrom PyQt6.QtWidgets import (QApplication, QDialog,QMessageBox ) from untitled import Ui_PasswordGender import sys import string # py模块含有字符 import randomclass MyPasswordGenerate(Ui_Password…

快速入门Linux,Linux岗位有哪些?(一)

文章目录 Linux与Linux运维操作系统&#xff1f;操作系统图解 认识LinuxLinux受欢迎的原因什么是Linux运维Linux运维岗位Linux运维岗位职责Linux运维架构师岗位职责Linux运维职业发展路线计算机硬件分类运维人员的三大核心职责 运维人员工作&#xff08;服务器&#xff09;什么…

python爬虫----了解爬虫(十一天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…

6000000IOPS!FASS×kunpeng920全新突破

实测数据详见下文 网络环境 前端和后端网均采用100GE网络&#xff0c;管理网采用1Gbps以太网。 前端网和后端网通过不同网段隔离&#xff0c;与管理网物理隔离。 软硬件配置 存储端配置&#xff1a; 客户端配置&#xff1a; 软件配置&#xff1a; 存储集群配置&#xff1a; …

【MapBox】实现实时飞行轨迹功能

之前写了一篇MapBox添加带箭头的轨迹线&#xff0c;现在在这个基础之上实现获取到无人机的推送点位数据实时飞行的功能 首先创建实例&#xff0c;将无人机的图标加载在地图上 const MAP_UAV_FLIGHT_ING (values, layerKey 无人机飞行) > {ClearUAVMap();const map GET_…

认证的无线网络安全

​在今天&#xff0c;大多数计算机网络都是无线网络&#xff0c;更易管理&#xff0c;移动性更强&#xff0c;而且成本也更低。而另一方面&#xff0c;无线网络也更容易受到攻击&#xff0c;因为企业无法将网络的物理范围控制在办公楼内&#xff0c;大街或停车场上的任何人都有…

postgresql数据库扩展之fdw

1.介绍 PostgreSQL中的Foreign Data Wrapper&#xff08;FDW&#xff09;是一个强大的功能&#xff0c;它允许你访问和操作存储在外部源中的数据&#xff0c;就好像它是PostgreSQL数据库内的一个表一样。这意味着你可以直接从PostgreSQL查询和联接不同数据库和系统中的数据。F…

Linux面试题汇总!附答案详解!学习提升必备!(30w+收藏)

Linux 概述 什么是Linux Unix和Linux有什么区别&#xff1f; 什么是 Linux 内核&#xff1f; Linux的基本组件是什么&#xff1f; Linux 的体系结构 BASH和DOS之间的基本区别是什么&#xff1f; Linux 开机启动过程&#xff1f; Linux系统缺省的运行级别&#xff1f; L…

高效学习方法:冥想背诵,看一句念一句,再每个词分析位置及语法等合理性,忘记哪个词再看猜下为什么会忘,跟自己的表达哪里不一样。

原则&#xff1a;易学则易行&#xff0c;则效果最好。《易经》 你提到的这种学习方法结合了多种记忆和理解技巧&#xff0c;可以帮助提高学习效率。下面是对这种方法的一个详细解释和一些建议&#xff1a; 冥想背诵&#xff1a;通过冥想来集中注意力&#xff0c;可以帮助你在没…

批量邮箱API发送邮件时如何提高发送效率?

批量邮箱API发送邮件的方法&#xff1f;如何用API批量发送邮件&#xff1f; 如何在使用批量邮箱API发送邮件时提高发送效率&#xff0c;却是众多企业和开发者所关注的焦点。AokSend将从多个方面探讨如何优化批量邮箱API发送邮件的效率&#xff0c;确保邮件能够迅速、准确地送达…

数字化转型不能单打独斗

在企业数字化建设的征程中&#xff0c;很多企业领导忽视了一个关键环节&#xff0c;那就是企业的组织能力。许多领导误以为软件公司可以包办任何问题&#xff0c;认为只要出钱就能享受贴身服务&#xff0c;甚至认为只需签署合同软件公司就会对甲方尽心尽责。然而&#xff0c;数…

❤️算法学习网站推荐

推荐一些学习网站 学习&#xff1a; B 站大学 YYDS CS 自学指南 算法通关手册 代码随想录 OI WIKI Hello 算法 刷题&#xff1a; 力扣洛谷DotCPP(C 语言网-含教程)Acwing蓝桥杯官网 算法可视化&#xff1a; 炼金术士 Alchemist

【C++】vector系列力扣刷题日志(136.只出现一次的数字,118.杨辉三角,26.删除有序数组中的重复项,260.只出现一次的数字 |||)

目录 136.只出现一次的数字 118.杨辉三角 26.删除有序数组中的重复项 260.只出现一次的数字 ||| vector的详细介绍及用法这里就不过多赘述了&#xff0c;可以参考上一篇博客&#xff1a;vector的介绍及使用说明 136.只出现一次的数字 题目&#xff1a; 给你一个 非空 整数…

开源代码分享(17)—基于yalmip+cplex的微电网优化调度(附matlab代码)

1基本概念 微网&#xff08;Micro-Grid&#xff0c;MG&#xff09;是进行电能调度时常见的概念&#xff0c;作为组织各分布式单元的结构。微网概念的提出旨在实现分布式电源的灵活、高效应用&#xff0c;解决数量庞大、形式多样的分布式电源并网问题[8]。微网中集成了电源、储能…