Skip to content

Commit ff874df

Browse files
authored
Add files via upload
1 parent c09720b commit ff874df

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

  • downloads/asterion-fcta-v1.0-public-release/asterion-fcta-v1.0/web-viewer/v0_9/js
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import * as THREE from 'https://unpkg.com/three@0.161.0/build/three.module.js';
2+
import { OrbitControls } from 'https://unpkg.com/three@0.161.0/examples/jsm/controls/OrbitControls.js';
3+
import { GLTFLoader } from 'https://unpkg.com/three@0.161.0/examples/jsm/loaders/GLTFLoader.js';
4+
5+
const viewer = document.getElementById('viewer');
6+
const scene = new THREE.Scene();
7+
scene.background = new THREE.Color(0x07101c);
8+
const camera = new THREE.PerspectiveCamera(45, viewer.clientWidth / viewer.clientHeight, 0.1, 1000);
9+
camera.position.set(55, 32, 55);
10+
const renderer = new THREE.WebGLRenderer({ antialias: true });
11+
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
12+
renderer.setSize(viewer.clientWidth, viewer.clientHeight);
13+
viewer.appendChild(renderer.domElement);
14+
const controls = new OrbitControls(camera, renderer.domElement);
15+
controls.enableDamping = true;
16+
scene.add(new THREE.HemisphereLight(0xffffff, 0x223344, 2.2));
17+
const key = new THREE.DirectionalLight(0xffffff, 2.5); key.position.set(20, 40, 30); scene.add(key);
18+
const loader = new GLTFLoader();
19+
let current;
20+
function loadModel(path){
21+
if(current) scene.remove(current);
22+
loader.load(path, (gltf)=>{
23+
current = gltf.scene;
24+
current.rotation.y = Math.PI * 0.12;
25+
scene.add(current);
26+
const box = new THREE.Box3().setFromObject(current);
27+
const center = box.getCenter(new THREE.Vector3());
28+
current.position.sub(center);
29+
controls.target.set(0,0,0); controls.update();
30+
});
31+
}
32+
document.querySelectorAll('[data-model]').forEach(btn => btn.addEventListener('click', () => loadModel(btn.dataset.model)));
33+
loadModel('assets/asterion_full_assembly.glb');
34+
function resize(){ camera.aspect = viewer.clientWidth/viewer.clientHeight; camera.updateProjectionMatrix(); renderer.setSize(viewer.clientWidth, viewer.clientHeight); }
35+
window.addEventListener('resize', resize);
36+
function animate(){ requestAnimationFrame(animate); controls.update(); if(current) current.rotation.y += 0.0015; renderer.render(scene,camera); }
37+
animate();

0 commit comments

Comments
 (0)