CubeTextureLoader() 不工作。或者我做错了什么

时间:2021-01-12 05:12:13

标签: javascript three.js textures

这是我的代码:

var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);

var renderer = new THREE.WebGLRenderer({antialias:true});
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

var controls = new THREE.OrbitControls(camera, renderer.domElement);
controls.enableDamping = true;
controls.dampingFactor = 0.25;
controls.enableZoom = true;
controls.autoRotate = true;

// Cube
var Cubegeometry = new THREE.BoxGeometry(1, 1, 1);
const CubeImgTexture = new THREE.CubeTextureLoader().setPath('imgs/textures/cube/').load([
  's1.png', 's5.png',
  's2.png', 's4.png',
  's3.png', 's6.png'
]);
var Cubematerial = new THREE.MeshStandardMaterial({
  map: CubeImgTexture
});
var CubeMesh = new THREE.Mesh(Cubegeometry, Cubematerial);
scene.add(CubeMesh);

camera.position.z = 5;
controls.update();

var animate = function() {
  requestAnimationFrame(animate);
  renderer.render(scene, camera);
};

当我运行它时,我得到一个空白屏幕和一个错误,指出“参数 6 对任何 6 个参数重载都无效。”

Errors

这是什么意思?

1 个答案:

答案 0 :(得分:1)

问题在于

var Cubematerial = new THREE.MeshStandardMaterial({
  map: CubeImgTexture
});

您永远不会初始化名为 CubeImgTexture 的任何内容。如果您尝试将cubeTexture 传递到.map 属性中,您将遇到问题,因为映射only expects a regular texture。也许您正在尝试assign it to the .envMap property instead?