three.js
是一个广泛使用的 JavaScript 库,用于在浏览器中创建和显示 3D 图形。glTF
(GL Transmission Format)是一种用于 3D 模型和场景的开放标准格式,旨在高效传输和加载 3D 内容。
纹理是将图像应用于 3D 模型表面的技术,可以增加模型的视觉细节和真实感。外部纹理是指纹理图像存储在模型文件之外,需要在加载模型时单独指定。
外部纹理可以是以下几种类型:
外部纹理广泛应用于各种 3D 场景中,例如:
以下是一个简单的示例代码,展示如何在 three.js
中将外部纹理应用于 glTF
模型:
import * as THREE from 'three';
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
// 创建场景、相机和渲染器
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
// 加载外部纹理
const textureLoader = new THREE.TextureLoader();
textureLoader.load('path/to/your/texture.jpg', (texture) => {
texture.encoding = THREE.sRGBEncoding; // 确保纹理颜色空间正确
// 加载 glTF 模型
const gltfLoader = new THREE.GLTFLoader();
gltfLoader.load('path/to/your/model.glb', (gltf) => {
const model = gltf.scene;
// 应用纹理到模型
model.traverse((child) => {
if (child.isMesh) {
child.material.map = texture;
child.material.needsUpdate = true;
}
});
scene.add(model);
// 设置相机位置
camera.position.z = 5;
// 渲染循环
const animate = () => {
requestAnimationFrame(animate);
renderer.render(scene, camera);
};
animate();
});
});
three.js
支持的格式(如 JPG、PNG)。通过以上步骤和示例代码,你应该能够在 three.js
中成功应用外部纹理到 glTF
模型。
领取专属 10元无门槛券
手把手带您无忧上云