six pictures inline, UV vertices are mapped into cube splices where there are gaps.
original picture:
looks like this: -----------------------
main Code like this: -----------------
container = document.getElementById('container');
camera = new THREE.PerspectiveCamera(75, videoWidth / videoHeight, 1, 1100);
scene = new THREE.Scene(); // 创建一个新的场景对象
window.movieGeometry = new THREE.BoxGeometry(256, 256, 256);
var textureLoader = new THREE.TextureLoader();
window.texture = textureLoader.load('./images/demo.png');
texture.minFilter = THREE.UVMapping;
texture.magFilter = THREE.NearestFilter;
window.movieMaterial = new THREE.MeshBasicMaterial({
map: texture,
side: THREE.BackSide,
});
// 6*1格式
const left = [new THREE.Vector2(0, 0), new THREE.Vector2(1/6, 0), new THREE.Vector2(1/6, 1), new THREE.Vector2(0, 1)];
const right = [new THREE.Vector2(1/6, 0), new THREE.Vector2(2/6, 0), new THREE.Vector2(2/6, 1), new THREE.Vector2(1/6, 1)];
const top = [new THREE.Vector2(2/6, 0), new THREE.Vector2(3/6, 0), new THREE.Vector2(3/6, 1), new THREE.Vector2(2/6, 1)];
const bottom = [new THREE.Vector2(3/6, 0), new THREE.Vector2(4/6, 0), new THREE.Vector2(4/6, 1), new THREE.Vector2(3/6, 1)];
const front = [new THREE.Vector2(4/6, 0), new THREE.Vector2(5/6, 0), new THREE.Vector2(5/6, 1), new THREE.Vector2(4/6, 1)];
const back = [new THREE.Vector2(5/6, 0), new THREE.Vector2(1, 0), new THREE.Vector2(1, 1), new THREE.Vector2(5/6, 1)];
window.uvAttribute = movieGeometry.getAttribute('uv');
const index = movieGeometry.getIndex();
uvAttribute.setXY(index.getX(0), right[2].x, right[2].y);
uvAttribute.setXY(index.getX(1), right[1].x, right[1].y);
uvAttribute.setXY(index.getX(2), right[3].x, right[3].y);
uvAttribute.setXY(index.getX(3), right[1].x, right[1].y);
uvAttribute.setXY(index.getX(4), right[0].x, right[0].y);
uvAttribute.setXY(index.getX(5), right[3].x, right[3].y);
uvAttribute.setXY(index.getX(6), left[2].x, left[2].y);
uvAttribute.setXY(index.getX(7), left[1].x, left[1].y);
uvAttribute.setXY(index.getX(8), left[3].x, left[3].y);
uvAttribute.setXY(index.getX(9), left[1].x, left[1].y);
uvAttribute.setXY(index.getX(10), left[0].x, left[0].y);
uvAttribute.setXY(index.getX(11), left[3].x, left[3].y);
uvAttribute.setXY(index.getX(12), top[2].x, top[2].y);
uvAttribute.setXY(index.getX(13), top[1].x, top[1].y);
uvAttribute.setXY(index.getX(14), top[3].x, top[3].y);
uvAttribute.setXY(index.getX(15), top[1].x, top[1].y);
uvAttribute.setXY(index.getX(16), top[0].x, top[0].y);
uvAttribute.setXY(index.getX(17), top[3].x, top[3].y);
uvAttribute.setXY(index.getX(18), bottom[2].x, bottom[2].y);
uvAttribute.setXY(index.getX(19), bottom[1].x, bottom[1].y);
uvAttribute.setXY(index.getX(20), bottom[3].x, bottom[3].y);
uvAttribute.setXY(index.getX(21), bottom[1].x, bottom[1].y);
uvAttribute.setXY(index.getX(22), bottom[0].x, bottom[0].y);
uvAttribute.setXY(index.getX(23), bottom[3].x, bottom[3].y);
uvAttribute.setXY(index.getX(24), front[2].x, front[2].y);
uvAttribute.setXY(index.getX(25), front[1].x, front[1].y);
uvAttribute.setXY(index.getX(26), front[3].x, front[3].y);
uvAttribute.setXY(index.getX(27), front[1].x, front[1].y);
uvAttribute.setXY(index.getX(28), front[0].x, front[0].y);
uvAttribute.setXY(index.getX(29), front[3].x, front[3].y);
uvAttribute.setXY(index.getX(30), back[2].x, back[2].y);
uvAttribute.setXY(index.getX(31), back[1].x, back[1].y);
uvAttribute.setXY(index.getX(32), back[3].x, back[3].y);
uvAttribute.setXY(index.getX(33), back[1].x, back[1].y);
uvAttribute.setXY(index.getX(34), back[0].x, back[0].y);
uvAttribute.setXY(index.getX(35), back[3].x, back[3].y);
window.movieScreen = new THREE.Mesh(movieGeometry, movieMaterial);
const position = {x: 0, y: 0, z: 0 };
movieScreen.position.set(position.x, position.y, position.z);
scene.add(movieScreen);
// // 渲染场景
camera.position.set(0, 0, 0.01);
renderer = new THREE.WebGLRenderer({
devicePixelRatio: window.devicePixelRatio,
alpha: true,
clearColor: 0xffffff,
antialias: true,
});
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(videoWidth , videoHeight);
container.appendChild(renderer.domElement);
I do not know how to solve, hope to get help, thank you