THREE.js 几何图不出现

2024-01-09

接下来我在自定义几何体上加载图像映射, 它代表上图中的棕色几何形状:

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所有的工作都按预期使用相同的材​​质(它代表上图中的立方体):

var lala = new THREE.BoxGeometry( 100, 100, 100 );
var lala2 = new THREE.Mesh( lala,aqua_bodengrund_mat);

我不是 3D 专家,我的代码中缺少什么才能正确显示图像纹理?


您需要在回调中应用纹理THREE.TextureLoader。另请检查文档here https://threejs.org/docs/#api/loaders/TextureLoader;第二个参数(onLoad) 是回调。

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 );

See 这把小提琴 https://jsfiddle.net/wilt/4yhp0ua5/进行演示。


UPDATE

如果您有自定义几何体,您还需要计算 UV 以正确显示纹理。我用了这个答案在这里 https://stackoverflow.com/a/20774922/1697459在另一个中计算它们在这里摆弄 https://jsfiddle.net/wilt/4yhp0ua5/3/

Note.我的小提琴中的 UV 是针对 XY 平面中的面计算的,如果您的面位于另一个平面中,则必须相应更新......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

THREE.js 几何图不出现 的相关文章

随机推荐