2021-02-02 18:33:21 +08:00
|
|
|
// 场景、相机、光源定义定义
|
|
|
|
var scene = new THREE.Scene();
|
|
|
|
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000000);
|
2021-02-05 18:16:35 +08:00
|
|
|
camera.up.set(0,0,1);
|
2021-02-02 18:33:21 +08:00
|
|
|
var light = new THREE.AmbientLight(0xffffff);
|
|
|
|
scene.add(light);
|
|
|
|
|
|
|
|
// 渲染器定义
|
2021-02-05 18:16:35 +08:00
|
|
|
var canvas = document.createElement( 'canvas' );
|
|
|
|
canvas.id = 'model';
|
|
|
|
var context = canvas.getContext( 'webgl2', {antialias: true, preserveDrawingBuffer: true});
|
|
|
|
var renderer = new THREE.WebGLRenderer({canvas: canvas, context: context, logarithmicDepthBuffer: true});
|
2021-02-02 18:33:21 +08:00
|
|
|
renderer.setSize(window.innerWidth, window.innerHeight);
|
|
|
|
renderer.setClearColor(0xffffff);
|
|
|
|
document.body.appendChild(renderer.domElement);
|
2021-02-05 18:16:35 +08:00
|
|
|
|
|
|
|
// 加载模型数据
|
|
|
|
const loader = new THREE.FileLoader();
|
|
|
|
loader.load(
|
|
|
|
'/demo/res/single-demo.json',
|
|
|
|
function(data)
|
|
|
|
{
|
|
|
|
var bimScene = BIMLoader(JSON.parse(data));
|
|
|
|
var box = new THREE.Box3();
|
|
|
|
box.expandByObject(bimScene);
|
|
|
|
box.expandByScalar(10000);
|
|
|
|
var cameraPos = new THREE.Vector3(box.min.x, box.min.y, box.max.z);
|
|
|
|
camera.position.copy(cameraPos);
|
|
|
|
camera.lookAt(box.getCenter());
|
|
|
|
camera.updateMatrixWorld();
|
|
|
|
scene.add(bimScene);
|
|
|
|
},
|
|
|
|
function(xhr)
|
|
|
|
{
|
|
|
|
console.log((xhr.loaded / xhr.total * 100) + '% loaded');
|
|
|
|
},
|
|
|
|
function(err)
|
|
|
|
{
|
|
|
|
console.error('An error happened');
|
|
|
|
}
|
|
|
|
)
|
|
|
|
|
|
|
|
function animate() {
|
|
|
|
requestAnimationFrame( animate );
|
|
|
|
renderer.render( scene, camera );
|
|
|
|
}
|
|
|
|
|
|
|
|
animate();
|