From 58745420a323ef601cdabb014c76e8234c21687b Mon Sep 17 00:00:00 2001 From: Danny McGee Date: Thu, 25 Jan 2024 16:08:13 -0500 Subject: [PATCH] Mixamo viewer boilerplate --- studio-frontend/src/app/app.element.ts | 11 +++++++ studio-web/src/index.ts | 1 + studio-web/src/lib/bvh-viewer.element.ts | 2 +- studio-web/src/lib/mixamo-viewer.element.ts | 34 +++++++++++++++++++++ studio/src/lib.rs | 23 ++++++++++++++ tsconfig.base.json | 1 + 6 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 studio-web/src/lib/mixamo-viewer.element.ts diff --git a/studio-frontend/src/app/app.element.ts b/studio-frontend/src/app/app.element.ts index 2c77f0d..6e90206 100644 --- a/studio-frontend/src/app/app.element.ts +++ b/studio-frontend/src/app/app.element.ts @@ -21,6 +21,7 @@ import { Ref, createRef, ref } from "lit-html/directives/ref.js"; import "@storyteller/studio-web/canvas-provider"; import "@storyteller/studio-web/viewer"; import "@storyteller/studio-web/bvh-viewer"; +import "@storyteller/studio-web/mixamo-viewer"; import "./button.element"; import "./help.element"; import "./icon.element"; @@ -46,6 +47,7 @@ export class AppElement extends LitElement { @state() selection?: string | null; @state() bvhPath?: string; + @state() mixamoPath?: string; @state() mode?: StudioMode; #sceneObjects: studio.SceneObject[] = []; @@ -67,6 +69,9 @@ export class AppElement extends LitElement { if (params.has("bvh")) this.bvhPath = params.get("bvh")!; + if (params.has("mixamo")) + this.mixamoPath = params.get("mixamo")!; + this.mode = match (params.get("mode"), { "studio": () => StudioMode.Editor, "viewer": () => StudioMode.Viewer, @@ -195,6 +200,12 @@ export class AppElement extends LitElement { skyboxId="test_scene" @scene-state=${this.onSceneStateChange} > + ` : this.mixamoPath ? html` + ` : html` ): void { + if (changes.has("mixamoPath") && !!this.mixamoPath) { + // TODO + } + + if (changes.has("skyboxId") && !!this.skyboxId) + studio.setSkybox(this.skyboxId); + } +} diff --git a/studio/src/lib.rs b/studio/src/lib.rs index a44b458..b7fe05a 100644 --- a/studio/src/lib.rs +++ b/studio/src/lib.rs @@ -115,6 +115,29 @@ pub fn start_bvh_viewer( app.run(); } +#[cfg_attr(feature = "wasm", wasm_bindgen(js_name = startMixamoViewer))] +pub fn start_mixamo_viewer( + mixamo_path: &str, + skybox_id: &str, + canvas_selector: &str, + canvas_alt: &str, + viewport_size: ViewportSize, +) { + let mut app = start_internal( + "Mannequin.gltf", + skybox_id, + canvas_selector, + canvas_alt, + viewport_size, + StudioMode::Viewer, + ); + + // TODO + info!("Mixamo path: '{mixamo_path}'"); + + app.run(); +} + #[cfg_attr(feature = "wasm", wasm_bindgen(js_name = startViewer))] /// Start the application as a read-only viewer for a single library object. /// diff --git a/tsconfig.base.json b/tsconfig.base.json index ab92679..34d4b4f 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -21,6 +21,7 @@ "@storyteller/studio-web/canvas-provider": ["studio-web/src/lib/canvas-provider.element.ts"], "@storyteller/studio-web/viewer": ["studio-web/src/lib/viewer.element.ts"], "@storyteller/studio-web/bvh-viewer": ["studio-web/src/lib/bvh-viewer.element.ts"], + "@storyteller/studio-web/mixamo-viewer": ["studio-web/src/lib/mixamo-viewer.element.ts"], "@storyteller/utility": ["utility/src/index.ts"] } },