最新要闻
- 世界观察:《阿凡达2》接招!国产科幻大片走出国门 《流浪地球2》将在澳新上映
- 消息!特斯拉国产车型大幅降价 副总裁陶琳回应:坚持以成本定价
- Win11 2023开年更新Build 25272发布:干掉中文版大BUG!更加流畅稳定
- 特斯拉降价 网友翻出蔚来李斌2年前视频:价格稳定是对用户负责
- 天天新消息丨智能电视视频会员一充再充!体验太差了
- Model 3要破20万节奏!特斯拉国产车型大幅降价 老车主晒图被割韭菜
- 国产特斯拉大幅降价被业内看好 带火供应链:大批概念股飞涨
- 【天天播资讯】特斯拉 2023第一个交易日:市值缩水一个推特
- 天天播报:CDPR赔偿1267万!《赛博朋克2077》集体诉讼案终于告一段落
- 当前热点-汽车博主为小米汽车打抱不平:部分媒体只会道听途说
- 全球播报:联想ThinkPhone真机亮相:经典ThinkPad涂装抢眼
- 【世界独家】恒驰5首次OTA升级来了!低温续航性能提升
- 当前消息!超越日本!印度成全球第三大汽车市场 平均千人36辆
- 吴京参演 《中国乒乓之绝地反击》定档大年初一:春节档已有7部新片
- 男子和白骆驼合影被攻击!专家提醒:骆驼战斗力惊人
- Redmi 12C支持内存扩展:4GB内存手机瞬间变6GB 699元性价比更高了
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
【世界热闻】three.js场景地形导出到物理引擎
太长不看版
遍历场景地形里的Mesh,从geometry里抽取index和position,通过这两个数组构建物理引擎里的Trimesh。
【资料图】
背景
最近在试制网页MMORPG,内核用最顺手的three.js,资产使用glTF Binary(.glb)文件载入场景。
需求
three.js虽然自带了OimoPhysics和包装,还包含了Ammo.js的包装,但两种包装都只能对三种特定几何体(BoxGeometry、SphereGeometry和IcosahedronGeometry)构造碰撞体,而GLTFLoader导入的是BufferGeometry,完全对不上。需要找到一种方法,在物理引擎中构造对应碰撞体。
环境
three.js r147
物理引擎(我用了cannon-es 0.20.0和@dimforge/rapier3d-compat 0.10.0)
过程
1. 基本几何体组合
……然后被美术否决了。嗯,我自己也不想这么搞_(:з」∠)_
2. Heightfield
在找到的物理引擎示例和演示里,除了构造基本几何体当做地面,剩下的都使用了Heightfield作为地形的构造方式。
然而这需要额外的高度图数据,生成、储存和读取都是需要解决的问题。
同时,考虑到将来有可能使用多层室内地形,这种方式需要额外工作才能支持多层结构。
最后没有使用。
3. Trimesh
看起来是唯一符合条件的方式,然而从哪里获取构造Trimesh的参数这个问题卡了很久。最后还是读three.js官方文档和glTF参考手册找到了线索。
物理引擎的Trimesh构造需要顶点坐标数组(vertices)和顶点索引数组(indices)。three.js的BufferGeometry里包含了这两项,只不过不怎么直观……
从glTF文件里读取的BufferGeometry,BufferGeometry.attributes里都有名为position的BufferAttribute,这个就是顶点坐标数组,通过BufferGeometry.getAttribute("position")就能拿到。
而顶点索引数组不在BufferGeometry.attributes里,就在BufferGeometry.index属性,也是BufferAttribute类型。
位置、旋转和缩放信息可以通过BufferGeometry所属Mesh的.getWorldPosition()、.getWorldQuaternion()和.getWorldScale()获得。(准确的说,这三个方法是Object3D的方法)
import { Quaternion, Vector3 } from "three";let terrainModelRoot; // 地形资产根节点// 读取模型资产......terrainModelRoot.traverse(node => { if (node.isMesh && node.geometry.index && node.geometry.hasAttribute("position")) { // 几何体信息 const geometry = node.geometry; // 顶点索引数组 const indices = geometry.index.array; // 顶点坐标数组 const vertices = geometry.getAttribute("position").array; // 缩放 const scale = node.getWorldScale(new Vector3()); // 位置 const position = node.getWorldPosition(new Vector3()); // 旋转(四元数) const quaternion = node.getWorldQuaternion(new Quaternion()); // 构造物理世界Trimesh碰撞体...... }});
需要额外注意的是,一些物理引擎不支持缩放,比如Rapier3D。这种情况下就需要先对顶点坐标数组应用缩放,然后再构造Trimesh。
const positionAttribute = geometry.getAttribute("position");const vertices = new Float32Array(positionAttribute.array.length);const scale = node.getWorldScale(new Vector3());for (let i = 0; i < positionAttribute.count; i++) { vertices[3 * i] = positionAttribute.array[3 * i] * scale.x; vertices[(3 * i) + 1] = positionAttribute.array[(3 * i) + 1] * scale.y; vertices[(3 * i) + 2] = positionAttribute.array[(3 * i) + 2] * scale.z;}
【世界热闻】three.js场景地形导出到物理引擎
网站变更检测、监控、警报丨WebSite-Watcher功能简介
基于Python的K-Means遥感影像聚类
苹果iOS app上架流程
世界观察:《阿凡达2》接招!国产科幻大片走出国门 《流浪地球2》将在澳新上映
消息!特斯拉国产车型大幅降价 副总裁陶琳回应:坚持以成本定价
Win11 2023开年更新Build 25272发布:干掉中文版大BUG!更加流畅稳定
特斯拉降价 网友翻出蔚来李斌2年前视频:价格稳定是对用户负责
天天新消息丨智能电视视频会员一充再充!体验太差了
全球即时:gget: 一款强大的基因组参考数据库的高效查询工具
学习笔记——过滤器链;监听器;Servlet、Filter、Listener的注解方式开发
Model 3要破20万节奏!特斯拉国产车型大幅降价 老车主晒图被割韭菜
redhat 9.1 安装docker
天天通讯!nginx: [error] CreateFile() “D:\nginx1.20.1/logs/nginx.pid“ failed (2: The
学习笔记——过滤器的匹配规则
国产特斯拉大幅降价被业内看好 带火供应链:大批概念股飞涨
【天天播资讯】特斯拉 2023第一个交易日:市值缩水一个推特
天天播报:CDPR赔偿1267万!《赛博朋克2077》集体诉讼案终于告一段落
当前热点-汽车博主为小米汽车打抱不平:部分媒体只会道听途说
北斗授时产品(GPS北斗授时设备)加NTP时间服务器设计思路
世界最资讯丨学习笔记——过滤器、过滤器的HelloWord、过滤器生命周期
【全球新要闻】A. Greatest Convex【Codeforces Round #842 (Div. 2)】
【天天速看料】如何安全的保存用户密码
焦点热讯:灵雀云入选2022 EDGE AWARDS「创新场景50」年度最佳场景实践榜单
全球播报:联想ThinkPhone真机亮相:经典ThinkPad涂装抢眼
【世界独家】恒驰5首次OTA升级来了!低温续航性能提升
当前消息!超越日本!印度成全球第三大汽车市场 平均千人36辆
吴京参演 《中国乒乓之绝地反击》定档大年初一:春节档已有7部新片
男子和白骆驼合影被攻击!专家提醒:骆驼战斗力惊人
环球热文:使用python编写端口扫描工具
QFramework v1.0 使用指南 工具篇:15. 补充内容:GridKit 二维格子数据结构
速读:【从零开始学爬虫】采集食品行业最新报价数据
Redmi 12C支持内存扩展:4GB内存手机瞬间变6GB 699元性价比更高了
全球消息!RTX 4050加持!联想发布Yoga AIO 9i一体机:设计惊艳
国产车型大降价 新款特斯拉Model X/S售价公布:超100万
【焦点热闻】小米13被低估了!网友没想到小米13相机能有这么大惊喜
天天日报丨三件套抄底:李锦记锦珍大桶生抽+金蚝油+黄豆酱 19.6元
每日热闻!数据结构:ST表 学习笔记
快资讯:ESP32 I2C 总线主模式通信程序
天天观点:创新的概念、设计和生产鞋类和鞋类软件丨Jevero及Botcha 3D功能简介
学习笔记——书城项目第五阶段之购物车数量的修改、精度问题的处理
世界观速讯丨《人民日报》炮轰手机预装应用不能删:占内存、鸡肋、广告满天飞
【当前热闻】240W闪充卷王!真我GT Neo5即将登场:有两种版本
全球动态:TCL华星宣布品牌形象升级:全新Logo正式上线
12月汽车投诉榜:丰田包揽前三甲 踩的同一个“坑”
世界快资讯:PS5主机千万别再长期竖向放置了!维修人士:会导致APU液金泄露 造成永久损坏
当前关注:阿汤哥驾F14爽片《壮志凌云2》惜败!《阿凡达2》成2022年票房冠军 赢麻
快资讯丨回顾2022
全球简讯:春节放假7天要调休!除夕火车票明日开抢
骁龙8 Gen2首发!高通正式推出卫星通信:3秒发出信息、可实现双向收发
每日视讯:Intel怕吗!AMD锐龙7000史上最强核显 这性能不得了
好用的工具
世界最资讯丨Python中的注释和input函数的使用
世界视讯!被骗好久!宰相刘罗锅真的是一个罗锅吗?1.9米帅男一枚
环球视讯!5位退役也未曾飞天的航天员首次公开!他们也是英雄
天天精选!在我电脑里 这是唯一的一个360产品
存款贬值快一半!土耳其人把游戏当成了救命稻草
顺序结构及if选择结构
环球今亮点!左偏树 学习笔记
亲测有效! Scrutiny 网站SEO检测及优化工具 V12.6.1 for mac
全球聚焦:创建型模式——前言
continue跳過循環(skippaart程序),接受設定的合法分數來進行平均分求值,并展現最高分,最低分
AMD锐龙7000 3D版暴力堆料144MB缓存 微软神助攻:Win11专属优化
【环球新视野】大疆2022年之最:有人每天飞5小时 有人一年飞了3万公里
正点原子FSMC控制TFT-LCD的地址偏移解读
【全球新视野】linux 下 mongodb 安装
PG中级证书到手,PostgreSQL(PG)认证
每日看点!RX 7900 XT悄然降价:国行回归7399元
【环球播资讯】AMD锐龙7000送上史上最强核显!频率3GHz 超越所有独显
世界播报:上海一家网吧春节促销:300元包20天 玩家签“生死状”
头条:风靡全国后 老头乐要席卷世界了
【天天报资讯】AcWing.1175 最大半连通子图
如何给所有的 await async 函数添加try/catch?
世界微资讯!mybatis使用postgresql中的jsonb数据类型
世界报道:2022年新能源车销量出炉:每卖出3辆车就有1辆新能源
全球动态:高分国漫《中国奇谭》B站播放量破1800万 网友:碾压《三体》动画
今年上映!国产航空大片《长空之王》新海报:尖端战机亮眼
超过6万台!国产龙芯CPU采购大单拿到手软
四川女子回娘家屋旁偶遇大熊猫直言激动 并不怕人:圆滚滚超可爱
学习笔记——书城项目第五阶段之购物项加号、购物项减号
【世界快播报】记一次2022某地HVV中的逆向分析
全球看点:2022年押注特斯拉亏大了!50支重仓基金惨不忍睹
环球视讯!加州新法实施 特斯拉仍宣传“全自动驾驶”:或被罚数千万美元
当前资讯!15分钟出结果 快速检测试剂盒:25份到手74.9元
司机酒后睡着 原地踩油门致车辆起火:烧成废墟
焦点播报:奇瑞营销公司总经理:自家2.0T发动机能与奔驰、宝马媲美
docker network
比亚迪高端品牌“仰望”发布 超级技术叩开百万级新能源市场大门
观察:首次集成AI引擎 AMD对锐龙7000移动版极其自信:超越苹果不是问题
新年微信红包封面领取攻略 谁还没有几个红包皮呢?
大桶更尽兴 溜溜梅六味青梅宝藏桶480g 25.1元
世界快看点丨【甘特图软件部件】上海道宁与DlhSoft助力您的Windows与移动应用程序开发
世界百事通!学习笔记——CommonResult工具、书城项目第五阶段(清空购物车、删除购物项、对数量的修改)
环球热点评!百万级U8、U9双双亮相!比亚迪已注册多个仰望品牌商标
环球资讯:笔记本显示屏变天了!OLED面板大爆发:加速淘汰LCD
一加11在京东抢购一空!3999元定价震撼整个手机行业
七彩虹RTX 4070 Ti 6499元起开卖:兔年惊喜礼盒 不加1分钱
副业不小心干成了主业!新东方在线拟更名为东方甄选控股有限公司
java中的多线程
2022 最新版 JDK 17 下载与安装 步骤演示 (图示版)