首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >THREE.js几何地图不出现

THREE.js几何地图不出现
EN

Stack Overflow用户
提问于 2016-06-15 00:37:24
回答 1查看 874关注 0票数 0

在加载自定义几何图形上的图像地图之后,它表示上面图片上的棕色几何图形:

代码语言:javascript
复制
var aqua_ground_geo = new THREE.Geometry();

var top0 = new THREE.Vector3(aqua_ground_geo_x_NEG, user_data['aqua_soil_calc_b_y'], aqua_ground_geo_z_NEG);
var top1 = new THREE.Vector3(aqua_ground_geo_x_POS, user_data['aqua_soil_calc_b_y'], aqua_ground_geo_z_NEG);
var top2 = new THREE.Vector3(aqua_ground_geo_x_NEG, user_data['aqua_soil_calc_f_y'], aqua_ground_geo_z_POS);

aqua_ground_geo.vertices.push(top0);
aqua_ground_geo.vertices.push(top1);
aqua_ground_geo.vertices.push(top2);

aqua_ground_geo.faces.push( new THREE.Face3(0,1,2) );

aqua_ground_geo.computeFaceNormals();
aqua_ground_geo.computeVertexNormals();

var textureUrl = "http://www.lifeguider.de/wp-content/uploads/aquag/bodengrund/dennerle_kies_naturweiss_1-2mm.jpg";
var aqua_bodengrund_tex = new THREE.TextureLoader().load( textureUrl );
var aqua_bodengrund_mat = new THREE.MeshLambertMaterial( {
    map: aqua_bodengrund_tex,
    color: 0xffffff,
} );
aqua_bodengrund_mat.shading = THREE.FlatShading;
aqua_bodengrund_mat.side = THREE.DoubleSide;

var aqua_bodengrund = new THREE.Mesh( aqua_ground_geo,aqua_bodengrund_mat);

在一个简单的THREE.BoxGeometry上,所有操作都与预期的一样,使用相同的材料(它表示上面图片中的立方体):

代码语言:javascript
复制
var lala = new THREE.BoxGeometry( 100, 100, 100 );
var lala2 = new THREE.Mesh( lala,aqua_bodengrund_mat);

我不是3D方面的专家,在我的代码中缺少什么,图像纹理将被正确显示?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-15 08:41:11

您需要在THREE.TextureLoader的回调中应用纹理。还检查文档这里;第二个参数(onLoad)是回调。

代码语言:javascript
复制
var textureUrl = "https://raw.githubusercontent.com/mrdoob/three.js/master/examples/textures/crate.gif";
var aqua_bodengrund_mat = new THREE.MeshLambertMaterial( {
    color: 0xffffff
});
var onLoad = function( texture ){
    aqua_bodengrund_mat.map = texture;
    aqua_bodengrund_mat.needsUpdate = true;
}
var loader = new THREE.TextureLoader();
loader.load( textureUrl, onLoad );

有关演示,请参见这把小提琴

更新

如果您有一个自定义几何,您还需要计算UVs,以正确地显示纹理。我使用这个答案在这里在另一个小提琴在这里中计算它们

注意:我的小提琴里的UV是为XY平面上的脸计算的,如果你的脸在另一个平面上,你必须相应地更新.

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

https://stackoverflow.com/questions/37824325

复制
相关文章

相似问题

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