首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Three.js中使用网格合并时保留UV贴图

在Three.js中使用网格合并时保留UV贴图
EN

Stack Overflow用户
提问于 2016-01-04 09:59:03
回答 1查看 540关注 0票数 1

我目前正在关注Jerome Etienne关于使用Three.js生成过程城市的this tutorial。本教程使用的是Three.js的59版,而我使用的是73版。

问题来自本教程中的这一行,

代码语言:javascript
复制
THREE.GeometryUtils.merge( cityGeometry, buildingMesh );

该方法不再可用。根据该answer实现这一点的新方法是,

代码语言:javascript
复制
buildingMesh.updateMatrix();
cityGeometry.merge( buildingMesh.geometry, buildingMesh.matrix );

但是,当我执行此操作时,UV贴图中屋顶的位置会发生变化。

这是我单独渲染建筑物时的外观。

这是我合并它们时的样子。请注意UV贴图中的屋顶位置。

屋顶的UV贴图的规格取决于教程。具体来说,

代码语言:javascript
复制
geometry.faceVertexUvs[0][4][0].set( 0, 0 );
geometry.faceVertexUvs[0][4][1].set( 0, 0 );
geometry.faceVertexUvs[0][4][2].set( 0, 0 );
geometry.faceVertexUvs[0][5][0].set( 0, 0 );
geometry.faceVertexUvs[0][5][1].set( 0, 0 );
geometry.faceVertexUvs[0][5][2].set( 0, 0 );

并且如下创建buildingMesh (在for循环中,其中n是建筑物的数量),

代码语言:javascript
复制
var buildingMesh = new THREE.Mesh( geometry );

为了使合并的网格符合几何体的UV贴图,我需要进行哪些更改或执行哪些操作?

EN

回答 1

Stack Overflow用户

发布于 2016-08-02 03:21:19

这里是使用最新three.js版本(v79)的一个。从你的代码中,我看不出我的更新和你的有什么不同,但是所有的屋顶都被正确渲染了:

https://codepen.io/Sphinxxxx/pen/WrbvEz?editors=0010

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34583760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档