JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://threejs.org/build/three.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>
<script src="https://threejs.org/examples/js/loaders/GLTFLoader.js"></script>
JavaScript
var container;
var camera, scene, raycaster, renderer, controls;
var mouse = new THREE.Vector2(),
INTERSECTED;
var radius = 100,
theta = 0;
var model;
const mixers = [];
const clock = new THREE.Clock();
init();
animate();
function init() {
container = document.createElement('div');
document.body.appendChild(container);
scene = new THREE.Scene();
camera = new THREE.PerspectiveCamera(70, window.innerWidth / window.innerHeight, 1, 10000);
var light = new THREE.DirectionalLight(0xffffff, 1);
light.position.set(1, 1, 1).normalize();
scene.add(light);
raycaster = new THREE.Raycaster();
controls = new THREE.OrbitControls(camera, renderer);
controls.autoRotate = true;
controls.autoRotateSpeed = 2;
controls.maxDistance = 200;
controls.minDistance = 160;
controls.maxPolarAngle = Math.PI / 2 * 1;
renderer = new THREE.WebGLRenderer();
renderer.setClearColor(0xf0f0f0);
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
loadModels();
}
function loadModels() {
const loader = new THREE.GLTFLoader();
const onLoad = (gltf, position) => {
const model = gltf.scene.children[0];
model.position.copy(position);
const animation = gltf.animations[0];
const mixer = new THREE.AnimationMixer(model);
// mixers.push(mixer);
// const action = mixer.clipAction(animation);
// action.play();
scene.add(model);
function clicked( event ) {
mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
raycaster.setFromCamera( mouse, camera );
var intersects = raycaster.intersectObject(model, true);
console.log(intersects.length)
if (intersects.length > 0) {
var position = {
x: controls.target.x,
y: controls.target.y,
z: controls.target.z
};
...