gpt4 book ai didi

javascript - Three.js - 使用 CubeTextureLoader 在立方体的每个面上创建不同的图像

转载 作者:搜寻专家 更新时间:2023-11-01 04:50:02 25 4
gpt4 key购买 nike

我正在尝试使用 CubeTextureLoader 创建一个在每一面都有不同图像的立方体。我的流程是:

  1. 使用 new THREE.CubeTextureLoader() 加载立方体纹理
  2. 使用立方体纹理创建新 Material
  3. 使用这种 Material 创建一个立方体
  4. 画立方体

相关代码如下。我可以使用 THREE.TextureLoader() 为所有面绘制一个单一 Material 的立方体,但是当我使用 CubeTextureLoader 时,我在屏幕上看不到任何内容或任何控制台错误。

var textureLoader = new THREE.CubeTextureLoader();

textureLoader.load([
'textures/face-1.jpg',
'textures/face-2.jpg',
'textures/face-3.jpg',
'textures/face-4.jpg',
'textures/face-5.jpg',
'textures/face-6.jpg'
], function (texture) {
var material = new THREE.MeshBasicMaterial({
color: 0xffffff,
map: texture
});

var cube = new THREE.Mesh(
new THREE.BoxGeometry(20, 20, 20),
material
);

// add & draw calls happen after all this
});

我猜我使用了错误的 Material 类型或网格,但找不到有关如何正确执行此操作的任何信息或示例。有什么想法吗?

最佳答案

THREE.MultiMaterial 也已被删除,如以下所述:https://github.com/mrdoob/three.js/issues/10931

现在,您可以在网格构造函数中使用一组 Material 。例如:

let cubeGeometry = new THREE.BoxGeometry(1,1,1);
let loader = new THREE.TextureLoader();
let materialArray = [
new THREE.MeshBasicMaterial( { map: loader.load("xpos.png") } ),
new THREE.MeshBasicMaterial( { map: loader.load("xneg.png") } ),
new THREE.MeshBasicMaterial( { map: loader.load("ypos.png") } ),
new THREE.MeshBasicMaterial( { map: loader.load("yneg.png") } ),
new THREE.MeshBasicMaterial( { map: loader.load("zpos.png") } ),
new THREE.MeshBasicMaterial( { map: loader.load("zneg.png") } ),
];
let mesh = new THREE.Mesh( cubeGeometry, materialArray );

关于javascript - Three.js - 使用 CubeTextureLoader 在立方体的每个面上创建不同的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35877484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com