タグ→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>
  );
}

results matching ""

    No results matching ""