在react中利用three.js 渲染模型 让鼠标拖拽是模型转动
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';
useEffect(() => {
// 初始化OrbitControls
const controls = new OrbitControls(camera, renderer.domElement);
// 设置控制参数
controls.enableDamping = true; // 平滑化运动
controls.dampingFactor = 0.05;
controls.screenSpacePanning = false;
controls.minDistance = 10;
controls.maxDistance = 200;//缩放最大距离
controls.minAzimuthAngle = -Math.PI / 4; // 最小方位角
controls.maxAzimuthAngle = Math.PI / 4; // 最大方位角
controls.minPolarAngle =-Math.PI/6;; // 允许相机向上看
controls.maxPolarAngle = Math.PI/3; // 允许相机向下看直到正下方
controls.addEventListener('start', (event) => {
});
controls.addEventListener('end', (event) => {
console.log('Interaction ended.',event);
});
// 注册zoom事件
controls.addEventListener('zoom', function() {
console.log('Zooming');
});
})
利用OrbitControls 实现模型转动放大缩小等功能,这是three里带的 所以用起来比较顺畅一些。
下面可以设置他放打缩小的限制已经 转动的角度。
所有的代码包括渲染代码我上一篇文章有写到渲染代码。都是写在了useEffect中,否则页面标签没有渲染完去渲染模型,会报错。