タグ→MMDの置換
LIVE DEMO
SOURCE CODE
タグから MMD モデルへの置き換え
TwinMaker のタグを MMD の 3D キャラクターに置き換えます
前提
TwinMaker のシーンに、任意の名前を付けたタグがあること
今回はtag-name-mmd
の名前を付けます
リソース
public 以下に、以下のファイルがあること
- single-content.json
TwinMaker の定義ファイル - MMD ファイル(拡張子 pmx)
画面に表示する MMD ファイル - アニメーションファイル(拡張子 vmd)
MMD が再生するアニメーションデータ
ソースコード
import { SceneViewer } from "@iot-app-kit/scene-composer";
import {
useOverrideTags,
DirectSceneLoader,
} from "@iak-extra/scene-composer-extra";
function App() {
// TwinMakerの定義ファイルをpublicに配置する
const sceneLoader = new DirectSceneLoader("/single-content.json");
/** TwinMakerをカスタマイズするコントローラー */
const controller = useOverrideTags({
// tag-name-mmdのタグを、publicに配置したMMDファイルと置き換える
"tag-name-mmd": (replaceTag) =>
replaceTag.toMMD
?.create({
angle: 0, // 表示角度(単位: degree)
scale: 0.08, // MMDの表示サイズ
// MMDのモデルデータを読み込む
pmxPath: "/mmd/UsadaPekora/PMX/UsadaPekora.pmx",
// アニメーションデータを読み込む
useMotionList: {
"animation-name-1": "/mmd/Alicia/MMD Motion/2分ループステップ1.vmd",
},
})
// タグの色が変わったことの通知を受け取る
.onStateChangeEvent((mesh, model, state) => {
// state(タグの色)の状態に応じたアニメーションデータ名を返却すると、
// useMotionListで読み込んだアニメーションデータを再生する
// 配列で複数渡すと、同時に再生する
return ["animation-name-1"];
}),
});
return (
<div className="App">
<SceneViewer
sceneComposerId={controller.composerId}
sceneLoader={sceneLoader}
/>
</div>
);
}