From 0a08ab081a5b1f1776e91d5af26c4c2371432835 Mon Sep 17 00:00:00 2001 From: Jack Z Date: Mon, 29 Aug 2022 20:13:20 +0800 Subject: [PATCH 1/4] Apply avatar quality on characters --- type_templates/vrm.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/type_templates/vrm.js b/type_templates/vrm.js index 9597dd1..afb09db 100644 --- a/type_templates/vrm.js +++ b/type_templates/vrm.js @@ -75,6 +75,8 @@ export default e => { _addPhysics(); } + avatarRenderer.initControlObject(app); + // we don't want to have per-frame bone updates for unworn avatars const _disableSkeletonMatrixUpdates = () => { avatarRenderer.scene.traverse(o => { From 2c1d9d7bfb89cdaa755b42d9e166a01d4fb782fe Mon Sep 17 00:00:00 2001 From: Jack Z Date: Mon, 29 Aug 2022 22:35:19 +0800 Subject: [PATCH 2/4] Call vrm placeholder update --- type_templates/vrm.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/type_templates/vrm.js b/type_templates/vrm.js index afb09db..bc7188d 100644 --- a/type_templates/vrm.js +++ b/type_templates/vrm.js @@ -1,6 +1,6 @@ import * as THREE from 'three'; import metaversefile from 'metaversefile'; -const {useApp, usePhysics, useAvatarRenderer, useCamera, useCleanup, useActivate, useLocalPlayer} = metaversefile; +const {useApp, usePhysics, useAvatarRenderer, useCamera, useCleanup, useFrame, useActivate, useLocalPlayer} = metaversefile; const localVector = new THREE.Vector3(); const localVector2 = new THREE.Vector3(); @@ -28,6 +28,7 @@ export default e => { let avatarRenderer = null; let physicsIds = []; let activateCb = null; + let frameCb = null; e.waitUntil((async () => { const arrayBuffer = await _fetchArrayBuffer(srcUrl); @@ -92,12 +93,23 @@ export default e => { const localPlayer = useLocalPlayer(); localPlayer.setAvatarApp(app); }; + + const {height} = avatarRenderer.getAvatarSize(); + frameCb = ({timestamp, timeDiff}) => { + if (!avatarRenderer.isAvatarBound) { + avatarRenderer.updateObject(timestamp, timeDiff, height); + } + } })()); useActivate(() => { activateCb && activateCb(); }); + useFrame((e) => { + frameCb && frameCb(e); + }); + // controlled tracking const _setPhysicsEnabled = enabled => { if (enabled) { From b4d99e2bd9fc0c1e15264ade45727c52fa621be5 Mon Sep 17 00:00:00 2001 From: Jack Z Date: Wed, 31 Aug 2022 22:27:31 +0800 Subject: [PATCH 3/4] cleanup --- type_templates/vrm.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/type_templates/vrm.js b/type_templates/vrm.js index bc7188d..9117312 100644 --- a/type_templates/vrm.js +++ b/type_templates/vrm.js @@ -99,7 +99,7 @@ export default e => { if (!avatarRenderer.isAvatarBound) { avatarRenderer.updateObject(timestamp, timeDiff, height); } - } + }; })()); useActivate(() => { From 82a1d7ce23652490245b68487ff74d12cb178b8d Mon Sep 17 00:00:00 2001 From: Jack Z Date: Tue, 6 Sep 2022 01:22:18 +0800 Subject: [PATCH 4/4] update vrm object mesh --- type_templates/vrm.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/type_templates/vrm.js b/type_templates/vrm.js index 9117312..4a92fb2 100644 --- a/type_templates/vrm.js +++ b/type_templates/vrm.js @@ -42,7 +42,6 @@ export default e => { app.avatarRenderer = avatarRenderer; await avatarRenderer.waitForLoad(); app.add(avatarRenderer.scene); - avatarRenderer.scene.updateMatrixWorld(); // globalThis.app = app; // globalThis.avatarRenderer = avatarRenderer; @@ -76,8 +75,6 @@ export default e => { _addPhysics(); } - avatarRenderer.initControlObject(app); - // we don't want to have per-frame bone updates for unworn avatars const _disableSkeletonMatrixUpdates = () => { avatarRenderer.scene.traverse(o => { @@ -96,7 +93,7 @@ export default e => { const {height} = avatarRenderer.getAvatarSize(); frameCb = ({timestamp, timeDiff}) => { - if (!avatarRenderer.isAvatarBound) { + if (!avatarRenderer.isControlled) { avatarRenderer.updateObject(timestamp, timeDiff, height); } };