Skip to content

Commit

Permalink
r170 (#4928)
Browse files Browse the repository at this point in the history
* updated deps - need to fix TS

* model-viewer compiles

* everything builds, removed cruft

* fixed variant exporter plugin
  • Loading branch information
elalish authored Nov 6, 2024
1 parent 976796f commit db15d9f
Show file tree
Hide file tree
Showing 138 changed files with 241 additions and 237 deletions.
316 changes: 167 additions & 149 deletions package-lock.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/model-viewer-effects/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ npm install three @google/model-viewer @google/model-viewer-effects
<script type="importmap">
{
"imports": {
"three": "https://cdn.jsdelivr.net/npm/three@^0.169.0/build/three.module.min.js"
"three": "https://cdn.jsdelivr.net/npm/three@^0.170.0/build/three.module.min.js"
}
}
</script>
Expand Down
6 changes: 3 additions & 3 deletions packages/model-viewer-effects/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@
],
"dependencies": {
"lit": "^3.2.1",
"postprocessing": "^6.35.3"
"postprocessing": "^6.36.4"
},
"peerDependencies": {
"@google/model-viewer": "^4.0.0"
Expand All @@ -85,7 +85,7 @@
"@rollup/plugin-replace": "^6.0.1",
"@types/mocha": "^10.0.9",
"@types/pngjs": "^6.0.1",
"@types/three": "^0.164.0",
"@types/three": "^0.169.0",
"@ungap/event-target": "^0.2.3",
"@web/test-runner": "^0.19.0",
"@web/test-runner-playwright": "^0.11.0",
Expand All @@ -99,7 +99,7 @@
"rollup-plugin-dts": "^6.1.1",
"rollup-plugin-polyfill": "^3.0.0",
"@rollup/plugin-terser": "^0.4.4",
"three": "^0.169.0",
"three": "^0.170.0",
"typescript": "5.6.3"
},
"publishConfig": {
Expand Down
34 changes: 14 additions & 20 deletions packages/model-viewer-effects/src/test/utilities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

import {ModelViewerElement} from '@google/model-viewer';
import {Renderer} from '@google/model-viewer/lib/three-components/Renderer.js';
import {EventDispatcher, HSL} from 'three';
import {HSL} from 'three';

import {getOwnPropertySymbolValue} from '../utilities.js';

Expand Down Expand Up @@ -168,32 +168,26 @@ export const createModelViewerElement =
return element;
};

/**
* Three.js EventDispatcher and DOM EventTarget use different event patterns,
* so AnyEvent covers the shape of both event types.
*/
export type AnyEvent = Event|CustomEvent<any>|{[index: string]: string};

export type PredicateFunction<T = void> = (value: T) => boolean;

/**
* @param {EventTarget|EventDispatcher} target
* @param {string} eventName
* @param {?Function} predicate
*/
export const waitForEvent = <T extends AnyEvent = Event>(
target: EventTarget|EventDispatcher,
eventName: string,
predicate: PredicateFunction<T>|null = null): Promise<T> =>
new Promise((resolve) => {
function handler(event: AnyEvent) {
if (!predicate || predicate(event as T)) {
resolve(event as T);
target.removeEventListener(eventName, handler as any);
}
}
target.addEventListener(eventName, handler as any);
});
export const waitForEvent =
<T>(target: any,
eventName: string,
predicate: PredicateFunction<T>|null = null): Promise<T> =>
new Promise((resolve) => {
function handler(event: T) {
if (!predicate || predicate(event)) {
resolve(event);
target.removeEventListener(eventName, handler);
}
}
target.addEventListener(eventName, handler);
});

export interface TypedArray<T = unknown> {
readonly BYTES_PER_ELEMENT: number;
Expand Down
2 changes: 1 addition & 1 deletion packages/model-viewer-effects/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"compilerOptions": {
"target": "es2017",
"module": "es2015",
"moduleResolution": "node",
"moduleResolution": "bundler",
"lib": [
"es2017",
"dom"
Expand Down
6 changes: 3 additions & 3 deletions packages/model-viewer/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -87,15 +87,15 @@
"@monogrid/gainmap-js": "^3.0.1"
},
"peerDependencies": {
"three": "^0.169.0"
"three": "^0.170.0"
},
"devDependencies": {
"@rollup/plugin-commonjs": "^28.0.1",
"@rollup/plugin-node-resolve": "^15.3.0",
"@rollup/plugin-replace": "^6.0.1",
"@types/mocha": "^10.0.9",
"@types/pngjs": "^6.0.1",
"@types/three": "^0.164.0",
"@types/three": "^0.169.0",
"@ungap/event-target": "^0.2.3",
"@web/test-runner": "^0.19.0",
"@web/test-runner-playwright": "^0.11.0",
Expand All @@ -109,7 +109,7 @@
"rollup-plugin-polyfill": "^3.0.0",
"@rollup/plugin-terser": "^0.4.4",
"typescript": "5.6.3",
"three": "^0.169.0"
"three": "^0.170.0"
},
"publishConfig": {
"access": "public"
Expand Down
10 changes: 1 addition & 9 deletions packages/model-viewer/src/three-components/CachingGLTFLoader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
*/

import {EventDispatcher, Texture, WebGLRenderer} from 'three';
import {MeshoptDecoder} from 'three/examples/jsm/libs/meshopt_decoder.module.js';
import {DRACOLoader} from 'three/examples/jsm/loaders/DRACOLoader.js';
import {GLTF, GLTFLoader} from 'three/examples/jsm/loaders/GLTFLoader.js';
import {KTX2Loader} from 'three/examples/jsm/loaders/KTX2Loader.js';
Expand Down Expand Up @@ -69,15 +70,6 @@ const ktx2Loader = new KTX2Loader();
let meshoptDecoderLocation: string;
let meshoptDecoder: Promise<typeof MeshoptDecoder>|undefined;

interface MeshoptDecoder {
ready: Promise<void>;
supported: boolean;
}

declare global {
const MeshoptDecoder: MeshoptDecoder;
}

export const $loader = Symbol('loader');
export const $evictionPolicy = Symbol('evictionPolicy');
const $GLTFInstance = Symbol('GLTFInstance');
Expand Down
5 changes: 3 additions & 2 deletions packages/model-viewer/src/three-components/ModelScene.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
* limitations under the License.
*/

import {ACESFilmicToneMapping, AnimationAction, AnimationActionLoopStyles, AnimationClip, AnimationMixer, Box3, Camera, Euler, Event as ThreeEvent, LoopPingPong, LoopRepeat, Material, Matrix3, Mesh, Object3D, PerspectiveCamera, Raycaster, Scene, Sphere, Texture, ToneMapping, Triangle, Vector2, Vector3, WebGLRenderer, XRTargetRaySpace} from 'three';
import {ACESFilmicToneMapping, AnimationAction, AnimationActionLoopStyles, AnimationClip, AnimationMixer, AnimationMixerEventMap, Box3, Camera, Euler, Event as ThreeEvent, LoopPingPong, LoopRepeat, Material, Matrix3, Mesh, Object3D, PerspectiveCamera, Raycaster, Scene, Sphere, Texture, ToneMapping, Triangle, Vector2, Vector3, WebGLRenderer, XRTargetRaySpace} from 'three';
import {CSS2DRenderer} from 'three/examples/jsm/renderers/CSS2DRenderer.js';
import {reduceVertices} from 'three/examples/jsm/utils/SceneUtils.js';

Expand Down Expand Up @@ -783,7 +783,8 @@ export class ModelScene extends Scene {
this.queueShadowRender();
}

subscribeMixerEvent(event: string, callback: (...args: any[]) => void) {
subscribeMixerEvent(
event: keyof AnimationMixerEventMap, callback: (...args: any[]) => void) {
this.mixer.addEventListener(event, callback);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
*/

import {Material, Mesh, Object3D} from 'three';
import {GLTFExporterPlugin} from 'three/examples/jsm/Addons.js';

import {VariantData} from '../../features/scene-graph/model.js';

Expand Down Expand Up @@ -61,7 +62,8 @@ const compatibleMaterial = (material: Material|null) => {
return material && material.isMaterial && !Array.isArray(material);
};

export default class GLTFExporterMaterialsVariantsExtension {
export default class GLTFExporterMaterialsVariantsExtension implements
GLTFExporterPlugin {
writer: any; // @TODO: Replace with GLTFWriter when GLTFExporter plugin TS
// declaration is ready
name: string;
Expand All @@ -73,32 +75,38 @@ export default class GLTFExporterMaterialsVariantsExtension {
this.variantNames = [];
}

beforeParse(objects: Object3D[]) {
beforeParse(objects: Object3D|Object3D[]) {
// Find all variant names and store them to the table
const variantNameSet = new Set<string>();
for (const object of objects) {
object.traverse(o => {
if (!compatibleObject(o)) {
return;
}
const variantMaterials =
o.userData.variantMaterials as Map<number, UserDataVariantMapping>;
const variantDataMap =
o.userData.variantData as Map<string, VariantData>;
for (const [variantName, variantData] of variantDataMap) {
const variantMaterial = variantMaterials.get(variantData.index);
// Ignore unloaded variant materials
if (variantMaterial && compatibleMaterial(variantMaterial.material)) {
variantNameSet.add(variantName);
}

const addVariantNames = (o: Object3D) => {
if (!compatibleObject(o)) {
return;
}
const variantMaterials =
o.userData.variantMaterials as Map<number, UserDataVariantMapping>;
const variantDataMap = o.userData.variantData as Map<string, VariantData>;
for (const [variantName, variantData] of variantDataMap) {
const variantMaterial = variantMaterials.get(variantData.index);
// Ignore unloaded variant materials
if (variantMaterial && compatibleMaterial(variantMaterial.material)) {
variantNameSet.add(variantName);
}
});
}
};

if (Array.isArray(objects)) {
for (const object of objects) {
object.traverse(addVariantNames);
}
} else {
objects.traverse(addVariantNames);
}
// We may want to sort?
variantNameSet.forEach(name => this.variantNames.push(name));
}

writeMesh(mesh: Mesh, meshDef: any) {
async writeMesh(mesh: Mesh, meshDef: any) {
if (!compatibleObject(mesh)) {
return;
}
Expand Down Expand Up @@ -126,7 +134,7 @@ export default class GLTFExporterMaterialsVariantsExtension {
}

const materialIndex =
this.writer.processMaterial(variantInstance.material);
await this.writer.processMaterialAsync(variantInstance.material);
if (!mappingTable.has(materialIndex)) {
mappingTable.set(
materialIndex, {material: materialIndex, variants: []});
Expand All @@ -146,7 +154,7 @@ export default class GLTFExporterMaterialsVariantsExtension {

const originalMaterialIndex =
compatibleMaterial(userData.originalMaterial) ?
this.writer.processMaterial(userData.originalMaterial) :
await this.writer.processMaterialAsync(userData.originalMaterial) :
-1;

for (const primitiveDef of meshDef.primitives) {
Expand Down
35 changes: 13 additions & 22 deletions packages/model-viewer/src/utilities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@
* limitations under the License.
*/

import {EventDispatcher} from 'three';

import {HAS_WEBXR_DEVICE_API, HAS_WEBXR_HIT_TEST_API, IS_WEBXR_AR_CANDIDATE} from './constants.js';

export type Constructor<T = object, U = object> = {
Expand Down Expand Up @@ -143,13 +141,6 @@ export const isDebugMode = (() => {
self.location.search.match(debugQueryParameter));
})();


/**
* Three.js EventDispatcher and DOM EventTarget use different event patterns,
* so AnyEvent covers the shape of both event types.
*/
export type AnyEvent = Event|CustomEvent<any>|{[index: string]: string};

export type PredicateFunction<T = void> = (value: T) => boolean;

export const timePasses = (ms: number = 0): Promise<void> =>
Expand All @@ -160,16 +151,16 @@ export const timePasses = (ms: number = 0): Promise<void> =>
* @param {string} eventName
* @param {?Function} predicate
*/
export const waitForEvent = <T extends AnyEvent = Event>(
target: EventTarget|EventDispatcher,
eventName: string,
predicate: PredicateFunction<T>|null = null): Promise<T> =>
new Promise(resolve => {
function handler(event: AnyEvent) {
if (!predicate || predicate(event as T)) {
resolve(event as T);
target.removeEventListener(eventName, handler as any);
}
}
target.addEventListener(eventName, handler as any);
});
export const waitForEvent =
<T>(target: any,
eventName: string,
predicate: PredicateFunction<T>|null = null): Promise<T> =>
new Promise(resolve => {
function handler(event: T) {
if (!predicate || predicate(event)) {
resolve(event);
target.removeEventListener(eventName, handler);
}
}
target.addEventListener(eventName, handler);
});
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
2 changes: 1 addition & 1 deletion packages/model-viewer/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"compilerOptions": {
"target": "es2017",
"module": "es2020",
"moduleResolution": "node",
"moduleResolution": "bundler",
"lib": [
"es2017",
"dom"
Expand Down
4 changes: 2 additions & 2 deletions packages/modelviewer.dev/examples/postprocessing/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
<script type="importmap">
{
"imports": {
"three": "https://cdn.jsdelivr.net/npm/three@^0.169.0/build/three.module.min.js"
"three": "https://cdn.jsdelivr.net/npm/three@^0.170.0/build/three.module.min.js"
}
}
</script>
Expand Down Expand Up @@ -104,7 +104,7 @@ <h2 class="demo-title">Setup Post Processing</h2>
<script type="importmap-noexecute">
{
"imports": {
"three": "https://cdn.jsdelivr.net/npm/three@^0.169.0/build/three.module.min.js"
"three": "https://cdn.jsdelivr.net/npm/three@^0.170.0/build/three.module.min.js"
}
}
</script>
Expand Down
2 changes: 1 addition & 1 deletion packages/modelviewer.dev/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"compilerOptions": {
"target": "es2017",
"module": "es2015",
"moduleResolution": "node",
"moduleResolution": "bundler",
"lib": [
"es2017",
"dom"
Expand Down
2 changes: 1 addition & 1 deletion packages/render-fidelity-tools/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"compilerOptions": {
"target": "es2021",
"module": "ES2020",
"moduleResolution": "node",
"moduleResolution": "bundler",
"lib": [
"es2017",
"dom"
Expand Down
2 changes: 1 addition & 1 deletion packages/space-opera/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"compilerOptions": {
"target": "es2017",
"module": "es2015",
"moduleResolution": "node",
"moduleResolution": "bundler",
"lib": [
"es2017",
"dom"
Expand Down

0 comments on commit db15d9f

Please sign in to comment.