Forráskód Böngészése

Add mars demo files

Garrett Johnson 4 éve
szülő
commit
087bc828e2
2 módosított fájl, 167 hozzáadás és 0 törlés
  1. 50 0
      example/mars.html
  2. 117 0
      example/mars.js

+ 50 - 0
example/mars.html

@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
+		<meta charset="utf-8"/>
+
+		<title>Dingo Gap Tile Set</title>
+
+		<style>
+            * {
+                margin: 0;
+                padding: 0;
+            }
+
+            html {
+                overflow: hidden;
+				font-family: Arial, Helvetica, sans-serif;
+				user-select: none;
+            }
+
+			canvas {
+				image-rendering: pixelated;
+				outline: none;
+			}
+
+			#info {
+				position: absolute;
+				top: 0;
+				left: 0;
+				width: 100%;
+				text-align: center;
+				padding: 5px;
+				pointer-events: none;
+				line-height: 1.5em;
+			}
+
+			#info, #info a {
+				color: #234;
+			}
+        </style>
+    </head>
+    <body>
+		<div id="info">
+			Dingo Gap site reconstructed from multiple sols of Curiosity Rover and Mars Reconnaissance Orbiter images.
+			<br/>
+			See more information <a href="https://github.com/NASA-AMMOS/3DTilesSampleData/tree/master/msl-dingo-gap">here</a>.
+		</div>
+        <script src="./mars.js"></script>
+    </body>
+</html>

+ 117 - 0
example/mars.js

@@ -0,0 +1,117 @@
+import {
+	TilesRenderer,
+} from '../src/index.js';
+import {
+	Scene,
+	DirectionalLight,
+	AmbientLight,
+	WebGLRenderer,
+	PerspectiveCamera,
+	Group,
+	sRGBEncoding,
+	Fog,
+	FogExp2,
+} from 'three';
+import { FlyOrbitControls } from './FlyOrbitControls.js';
+import * as dat from 'three/examples/jsm/libs/dat.gui.module.js';
+
+let camera, controls, scene, renderer;
+let groundTiles, skyTiles;
+
+const params = {
+
+	fog: true,
+
+};
+
+init();
+render();
+
+function init() {
+
+	const fog = new FogExp2( 0xd8cec0, .0075, 250 );
+	scene = new Scene();
+	scene.fog = fog;
+
+	// primary camera view
+	renderer = new WebGLRenderer( { antialias: true } );
+	renderer.setPixelRatio( window.devicePixelRatio );
+	renderer.setSize( window.innerWidth, window.innerHeight );
+	renderer.setClearColor( 0xd8cec0 );
+	renderer.outputEncoding = sRGBEncoding;
+
+	document.body.appendChild( renderer.domElement );
+	renderer.domElement.tabIndex = 1;
+
+	camera = new PerspectiveCamera( 60, window.innerWidth / window.innerHeight, 1, 4000 );
+	camera.position.set( 20, 10, 20 );
+
+	// controls
+	controls = new FlyOrbitControls( camera, renderer.domElement );
+	controls.screenSpacePanning = false;
+	controls.minDistance = 1;
+	controls.maxDistance = 2000;
+	controls.baseSpeed = 0.1;
+	controls.fastSpeed = 0.2;
+
+	// lights
+	const dirLight = new DirectionalLight( 0xffffff );
+	dirLight.position.set( 1, 2, 3 );
+	scene.add( dirLight );
+
+	const ambLight = new AmbientLight( 0xffffff, 0.2 );
+	scene.add( ambLight );
+
+	const tilesParent = new Group();
+	tilesParent.rotation.set( Math.PI / 2, 0, 0 );
+	scene.add( tilesParent );
+
+	groundTiles = new TilesRenderer( 'https://raw.githubusercontent.com/NASA-AMMOS/3DTilesSampleData/master/msl-dingo-gap/0528_0260184_to_s64o256_colorize/0528_0260184_to_s64o256_colorize/0528_0260184_to_s64o256_colorize_tileset.json' );
+	groundTiles.fetchOptions.mode = 'cors';
+	groundTiles.errorTarget = 15;
+
+	skyTiles = new TilesRenderer( 'https://raw.githubusercontent.com/NASA-AMMOS/3DTilesSampleData/master/msl-dingo-gap/0528_0260184_to_s64o256_colorize/0528_0260184_to_s64o256_sky/0528_0260184_to_s64o256_sky_tileset.json' );
+	skyTiles.fetchOptions.mode = 'cors';
+	skyTiles.lruCache = groundTiles.lruCache;
+
+	tilesParent.add( groundTiles.group, skyTiles.group );
+
+	onWindowResize();
+	window.addEventListener( 'resize', onWindowResize, false );
+
+	const gui = new dat.GUI();
+	gui.add( params, 'fog' ).onChange( v => {
+
+		scene.fog = v ? fog : null;
+
+	} );
+	gui.open();
+
+}
+
+function onWindowResize() {
+
+	camera.aspect = window.innerWidth / window.innerHeight;
+	camera.updateProjectionMatrix();
+	renderer.setSize( window.innerWidth, window.innerHeight );
+	renderer.setPixelRatio( window.devicePixelRatio );
+
+}
+
+function render() {
+
+	requestAnimationFrame( render );
+
+	camera.updateMatrixWorld();
+
+	groundTiles.setCamera( camera );
+	groundTiles.setResolutionFromRenderer( camera, renderer );
+	groundTiles.update();
+
+	skyTiles.setCamera( camera );
+	skyTiles.setResolutionFromRenderer( camera, renderer );
+	skyTiles.update();
+
+	renderer.render( scene, camera );
+
+}