版本
"three": "^0.144.0",
1.相机分为透视相机(PerspectiveCamera)和正交相机(OrthographicCamera)
var width = window.innerWidth; //窗口宽度
var height = window.innerHeight; //窗口高度
createCamera(width, height)
function createCamera(width, height) {
var k = width / height; //窗口宽高比
var s = 200; //三维场景显示范围控制系数,系数越大,显示的范围越大
// //创建相机对象
// 正交相机
// camera = new THREE.OrthographicCamera(-s * k, s * k, s, -s, 1, 1000);
// 透视相机(此处需要全景和透视)
camera = new THREE.PerspectiveCamera(
45,
window.innerWidth / window.innerHeight,
0.1,
20000
);
camera.position.set(200, 300, 200); //设置相机位置
camera.lookAt(scene.position); //设置相机方向(指向的场景对象)
}
2.如果要旋转看四周的场景必要要用透视相机
function createBackground() {
var urls = [
"model/textures/posx.jpg",
"model/textures/negx.jpg",
"model/textures/posy.jpg",
"model/textures/negy.jpg",
"model/textures/posz.jpg",
"model/textures/negz.jpg",
];
// 注意要使用透视相机(PerspectiveCamera),而非正交相机(OrthographicCamera)
scene.background = new THREE.CubeTextureLoader().load(urls);
// 方法二
/* scene.background = new THREE.CubeTextureLoader()
.setPath(`${publicPath}model/textures/`)
.load([
"posx.jpg",
"negx.jpg",
"posy.jpg",
"negy.jpg",
"posz.jpg",
"negz.jpg",
]); */
}
3.如果只是设置背景图片(两个相机模式都可以)
function createBackground() {
const loader = new THREE.TextureLoader();
const bgTexture = loader.load("/model/textures/negz.jpg");
scene.background = bgTexture;
}
4.相机位置可以改变辅助线位置【不设置相机位置,辅助线出不来】
// 创建辅助坐标系
function createAxesHelper() {
axesHelper = new THREE.AxesHelper(250);//250代表了辅助线的长度
scene.add(axesHelper);
}
4.1设置相机位置
function createCamera(width, height) {
/**
* 相机设置
*/
var k = width / height; //窗口宽高比
var s = 200; //三维场景显示范围控制系数,系数越大,显示的范围越大
//创建相机对象
// 正交相机
camera = new THREE.OrthographicCamera(-s * k, s * k, s, -s, 1, 1000);
// 透视相机(此处需要全景和透视)
camera = new THREE.PerspectiveCamera(
45,
window.innerWidth / window.innerHeight,
0.1,
20000
);
camera.position.set(30, 30, 30); //设置相机位置
}
旋转照相机的角度可以旋转轴
// 视角正对,同时场景也跟着变化
camera.position.set(0, 0, 50); //设置相机位置
备注
文件放在 public\model\textures