Skip to content

Commit 1c9c331

Browse files
Merge pull request #14 from NASA-AMMOS/ts-2
#2 Model Layers
2 parents 84287c0 + bb251bf commit 1c9c331

File tree

20 files changed

+871
-23
lines changed

20 files changed

+871
-23
lines changed

CHANGELOG.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,21 @@ LithoSphere's first release!
1818
### Changed
1919

2020
- PNG.js and zlib.js are now modules instead of globals
21+
22+
## v1.0.3
23+
24+
#### Added
25+
26+
- {constructor}.demFallback
27+
28+
#### Fixed
29+
30+
- {vector/clamped layer}.letPropertiesStyleOverride
31+
32+
## v1.1.0
33+
34+
#### Added
35+
36+
- Model layer type (.dae, .gltf, .obj)
37+
- Bearings (directional arrows) for clamped vector points
38+
- Keyboard navigation controls (wasd = pan, qe = rotate, rf = dolly, tg: zoom)

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,13 @@ Head over to the **[Documentation](https://nasa-ammos.github.io/LithoSphere/)**
3838
- Overlay (upcoming)
3939
- Tile
4040
- Tile3d
41-
- Model (upcoming)
41+
- Model
4242
- Adjustable planetary radii
4343
- Scripts for tiling Digital Elevation Maps (DEM) and custom projections
4444
- Various tile formats:
4545
- TMS
4646
- WMTS
47-
- WMS (upcoming)
47+
- WMS
4848
- Full Proj4 support to render tile sets of any projection
4949
- A suite of pluginable UI controls:
5050
- Compass

dist/lithosphere.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/src/core/events.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ export default class Events {
3636
_matchPlanetsLODToPlanet(): void;
3737
_refreshFrontGroupRotation(): void;
3838
private _onClick;
39+
private _onKeyDown;
3940
_onMouseMove: (e?: any) => void;
4041
private _updateMouseCoords;
4142
private updateHoverInfoPosition;

dist/src/layers/index.d.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@ import Tile3dLayerer from './tile3d';
22
import TileLayerer from './tile';
33
import ClampedLayerer from './clamped';
44
import VectorLayerer from './vector';
5+
import ModelLayerer from './model';
56
interface Private {
67
layerers: {
78
tile3d: Tile3dLayerer;
89
tile: TileLayerer;
910
clamped: ClampedLayerer;
1011
vector: VectorLayerer;
12+
model: ModelLayerer;
1113
};
1214
}
1315
export default class Layers {
@@ -18,6 +20,7 @@ export default class Layers {
1820
tile: any;
1921
clamped: any;
2022
vector: any;
23+
model: any;
2124
all: any;
2225
constructor(parent: any);
2326
_reset(): void;
@@ -29,6 +32,7 @@ export default class Layers {
2932
findLowestMinZoom: () => number;
3033
private getFeatureStyleProp;
3134
getLayerByName: (layerName: string) => any;
35+
hasLayer: (layerName: string) => any;
3236
getFeatureStyle: (layer: any, feature: any, isStrokeless?: boolean) => any;
3337
}
3438
export {};

dist/src/layers/model.d.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
export default class ModelLayerer {
2+
p: any;
3+
modelCache: any;
4+
constructor(parent: any);
5+
add: (layerObj: any, callback?: Function) => void;
6+
toggle: (name: string, on?: boolean) => boolean;
7+
setOpacity: (name: string, opacity: number) => boolean;
8+
remove: (name: string) => boolean;
9+
private generateModel;
10+
private objToModel;
11+
private daeToModel;
12+
private gltfToModel;
13+
private localizeModel;
14+
}

dist/src/lithosphere.d.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ interface Private {
88
container: HTMLElement;
99
sceneContainer: HTMLElement;
1010
wasInitialized: boolean;
11+
rendererWrapper: any;
1112
renderer: any;
1213
cameras: any;
1314
cameraPositionTarget: number[];
@@ -42,6 +43,8 @@ export default class LithoSphere {
4243
removeLayer: Function;
4344
toggleLayer: Function;
4445
setLayerOpacity: Function;
46+
getLayerByName: Function;
47+
hasLayer: Function;
4548
addControl: Function;
4649
removeControl: Function;
4750
scene: Scene;

dist/src/utils/index.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,7 @@ declare const Utils: {
1818
rotateAroundArbAxis(object: any, axis: any, radians: any, noPremultiply?: boolean): void;
1919
getParamString(params: any, baseUrl: string, isUppercase?: boolean): string;
2020
isArray(object: any): boolean;
21+
setChildrenMaterialOpacity(model: any, opacity: number, recurse?: Function): void;
22+
setAllMaterialOpacity(model: any, opacity: any): void;
2123
};
2224
export default Utils;

docs/pages/Layers/Clamped/clamped.markdown

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ Litho.addLayer(
4040
byProp: {
4141
'prop=images.0.test:blue': {},
4242
},
43+
bearing: {
44+
angleProp: 'yaw_rad', // path.to.bearing.prop
45+
angleUnit: 'rad', //rad | deg
46+
color: 'cyan', //css color
47+
},
4348
},
4449
opacity: 1,
4550
minZoom: 11,
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
---
2+
layout: page
3+
title: Model
4+
permalink: /layers/model
5+
parent: Layers
6+
---
7+
8+
# Model
9+
10+
Adds a model to the scene.
11+
12+
Supports: .glb, .gltf, .dae, .obj
13+
14+
Example
15+
16+
```javascript
17+
Litho.addLayer(
18+
'model',
19+
{
20+
name: 'roverGLTF',
21+
order: 1,
22+
on: true,
23+
path: 'http://localhost:8888/Missions/MSL/Data/models/Perseverance.glb',
24+
// mtlPath: '', //if path is to an obj
25+
opacity: 0.5,
26+
position: {
27+
longitude: 137.3572927368641, // default 0
28+
latitude: -4.674971631163808, // default 0
29+
elevation: -4443.613, // default 0
30+
},
31+
scale: 10, // default 1
32+
rotation: {
33+
// y-up is away from planet center. x is pitch, y is yaw, z is roll
34+
x: Math.PI / 12, // in radians | default 0
35+
y: Math.PI / 1.5, // default 0
36+
z: 0, // default 0
37+
order: 'YXZ', //default YXZ
38+
},
39+
// cache: true, // default true // If true, uses cloned meshes from the first download
40+
},
41+
() => {
42+
console.log('Rover loaded')
43+
//Litho.setLayerOpacity('roverGLTF', 0.25)
44+
//Litho.removeLayer('roverGLTF')
45+
/*
46+
Litho.toggleLayer('roverGLTF', false)
47+
setTimeout(() => {
48+
Litho.toggleLayer('roverGLTF', true)
49+
}, 10000)
50+
*/
51+
}
52+
)
53+
```

0 commit comments

Comments
 (0)