index-draco.html 4.8 KB
Newer Older
H
huayifeng 已提交
1 2 3 4
<!DOCTYPE html>
<html lang="en">

<head>
H
huayifeng 已提交
5
	<title>鸿星尔克720°展厅——Three.js</title>
H
huayifeng 已提交
6 7 8
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
	<link type="text/css" rel="stylesheet" href="https://cdn.jsdelivr.net/gh/mrdoob/three.js@r130/examples/main.css">
H
huayifeng 已提交
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
	<style>
.github-corner:hover .octo-arm {
  animation: octocat-wave 560ms ease-in-out;
}
@keyframes octocat-wave {
  0%,
  100% {
    transform: rotate(0);
  }
  20%,
  60% {
    transform: rotate(-25deg);
  }
  40%,
  80% {
    transform: rotate(10deg);
  }
}
@media (max-width: 500px) {
  .github-corner:hover .octo-arm {
    animation: none;
  }
  .github-corner .octo-arm {
    animation: octocat-wave 560ms ease-in-out;
  }
}
	</style>
	<script>
		var _hmt = _hmt || [];
		(function() {
		  var hm = document.createElement("script");
		  hm.src = "https://hm.baidu.com/hm.js?88edae91c0d9f3d77df7ee6685d66f08";
		  var s = document.getElementsByTagName("script")[0]; 
		  s.parentNode.insertBefore(hm, s);
		})();
	  </script>
H
huayifeng 已提交
45 46
</head>

Y
Y. Z. Chen 已提交
47
<body><a href="https://github.com/hua1995116/360-sneakers-viewer" class="github-corner"><svg width="80" height="80" viewBox="0 0 250 250" style="fill: rgb(34, 34, 34); color: rgb(255, 255, 255); position: absolute; top: 0px; border: 0px; right: 0px;"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" class="octo-arm" style="transform-origin: 130px 106px;"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a>
H
huayifeng 已提交
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
	<script type="module">

		import * as THREE from 'https://cdn.jsdelivr.net/npm/three@0.129.0/build/three.module.js';

		import { OrbitControls } from 'https://cdn.jsdelivr.net/gh/mrdoob/three.js@r130/examples/jsm/controls/OrbitControls.js';
		import { GLTFLoader } from 'https://cdn.jsdelivr.net/gh/mrdoob/three.js@r130/examples/jsm/loaders/GLTFLoader.js';
		import { DRACOLoader } from 'https://cdn.jsdelivr.net/gh/mrdoob/three.js@r130/examples/jsm/loaders/DRACOLoader.js'

		let camera, scene, renderer;

		init();
		render();

		function init() {
			const container = document.createElement('div');
			document.body.appendChild(container);
			// 设置一个透视摄像机
			camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.25, 1000);
			// 设置相机的位置
			camera.position.set(0, 1.5, -30.0);

			scene = new THREE.Scene();
H
huayifeng 已提交
70 71 72 73
			// 设置灯光
			const directionalLight = new THREE.AmbientLight(0xffffff, 4);
			scene.add(directionalLight);
			directionalLight.position.set(2, 5, 5);
H
huayifeng 已提交
74 75 76 77 78
			// 加载模型
			const gltfloader = new GLTFLoader();
			const draco = new DRACOLoader();
			draco.setDecoderPath('https://www.gstatic.com/draco/v1/decoders/');
			gltfloader.setDRACOLoader(draco);
H
huayifeng 已提交
79
			gltfloader.setPath('https://cdn.jsdelivr.net/gh/hua1995116/360-sneakers-viewer/assets/obj4/');
H
huayifeng 已提交
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
			gltfloader.load('er4-1.glb', function (gltf) {
				gltf.scene.scale.set(0.2, 0.2, 0.2); //设置缩放
				gltf.scene.rotation.set(-Math.PI / 2, 0, 0) // 设置角度
				const Orbit = new THREE.Object3D();
				Orbit.add(gltf.scene);
				Orbit.rotation.set(0, Math.PI / 2, 0);

				scene.add(Orbit);
				render();
			});


			renderer = new THREE.WebGLRenderer({ antialias: true });
			renderer.setPixelRatio(window.devicePixelRatio);
			renderer.setSize(window.innerWidth, window.innerHeight);
			container.appendChild(renderer.domElement);

			const controls = new OrbitControls(camera, renderer.domElement);
			controls.addEventListener('change', render);
			controls.minDistance = 2; // 限制距离
			controls.maxDistance = 10; 
			controls.target.set(0, 0, 0);  // 旋转中心点

H
huayifeng 已提交
103 104
			// controls.minPolarAngle = 0.3 // 设置最小旋转角度
			// controls.maxPolarAngle = Math.PI / 2 - Math.PI / 10
H
huayifeng 已提交
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132

			controls.update();

			window.addEventListener('resize', onWindowResize);

		}

		function onWindowResize() {
			// 重新渲染
			camera.aspect = window.innerWidth / window.innerHeight;
			camera.updateProjectionMatrix();

			renderer.setSize(window.innerWidth, window.innerHeight);

			render();

		}

		function render() {

			renderer.render(scene, camera);

		}

	</script>

</body>

Y
Y. Z. Chen 已提交
133
</html>