CrossRoad

XRを中心とした技術ブログ。 Check also "English" category.

PLATEAU (2022) の3Dモデルを、オープンデータを活用してブラウザで表示できるように出力してみよう

ここ最近PLATEAUについて調べています。

2年前にBabylon.jsでPLATEAUモデルを表示させる方法を書きました。

www.crossroad-tech.com

当時は、fbx形式で固定エリアのPLATEAUモデルをダウンロードして表示する方法がありました。しかし、最近はPLATEAU SDK for Unityがあり、任意の場所を指定して出力できるようになっています。

都市モデルのインポート | PLATEAU SDK for Unity

今回はPLATEAU SDK for Unityで取得したPLATEAUデータをglbファイルに変換して、オープンデータのマッピングができるサイズで出力する方法を説明します。
ただ3Dモデルとして出力するだけならば、今回の作業をしなくてもよいのですが、オープンデータに記載の緯度経度を使ってPLATEAUモデルにオープンデータ (例:公衆無線LANスポット、公共施設などの位置を表示) をマッピングする場合、今回のようにサイズを考慮する必要があります。

  • 1. 主な処理の流れ
  • 2. UnityでPLATEAUデータを表示させる
  • 3. fbxまたはglb形式で出力する
  • 4. Blenderでfbxまたはglbファイルをインポートする
  • 5. Blenderで左右反転をする
  • 6. Blenderでオブジェクト結合 (join) を行う
  • 7. おわりに

環境

Unity 2021.3.28f1
PLATEAU SDK for Unity v 2.0.0. alpha
Babylon.js v6.2.1
Blender 3.3.6

2022年の東京都内のPLATEAUモデルを使用しました

続きを読む

【生成AIの検証】BlenderGPTを試してみました

前回に引き続き、今度はBlenderでの3Dモデル自動生成機能である、BlenderGPTを試してみました。

  • 1. BlenderGPTとは
  • 2. 環境構築
  • 3. BlenderGPTで試した結果
  • 4. OpenAI (ChatGPT 3.5) でBlenderのPythonスクリプトを問い合わせた結果
  • 5. Tips
    • 5.1 OpenAIのAPIキーは生成時しか表示されない
    • 5.2 突然無料枠が使えなくなったと思ったら
    • 5.3 クレジットを登録したらHard/Soft limitの設定がお勧め
  • 6. おわりに

使用した環境

Blender 3.3.6
ChatGPT 3.5

続きを読む

Blender 3.1.2でUV展開を使って3Dモデルにテクスチャを貼る方法

Blenderでモデリングをしたとき、任意の場所にテクスチャを貼りたいことがあります。

これが思ったよりも手間取ったので、簡単な例をもとに手順を記載しようと思います。

使用した環境
Blender 3.1.2

  • 1. ドアの3Dモデルと画像を準備する
  • 2. Blenderでドア3Dモデルに切れ目を入れてUV展開する
  • 3. BlenderでUV展開画像をエクスポートして、画像編集ソフトで画像を割り当てる
  • 4. BlenderのShadingで画像を割り当てる
  • 5. おわりに
続きを読む

BlenderとArchimeshを使う時のちょっとしたTips

最近またBlenderのArchimeshを試しています。ArchimeshとはBlenderで部屋の間取りを作ることができるアドオンです。概要や基本的な使い方は以下をご参照ください。

www.crossroad-tech.com

今回は以前の記事で書けなかったArchimeshのTipsを追加します。

Blender 3.1.2
Archimesh 1.2.2

  • 1. Archimeshの機能で寸法を表示させる
  • 2. Blender標準機能で寸法を表示させる
  • 3. 家具の寸法を調整する
  • 4. Roomを使って複雑な壁形状を表示させる
  • 5. おわりに
続きを読む

Babylon.js Editor v4.2.0でキャラクタが炎の魔法剣を振るモーションを作る方法

以前からBabylon.jsでキャラクタを動かす方法を色々と調べています。特に理由はないのですがキャラクタを動かす方法を調べていく中で、ダイの大冒険6巻で登場した「火炎大地斬」を再現してみようと思って、炎の魔法剣を作って剣を振るモーションを作ってみました。

今回は剣を振るモーションを作る方法について解説します。

  • 1 剣や銃を腕と一緒に動かすには、BabylonjsのattachToBoneを使う
  • 2 particleも合わせて配置するにはisLocalとgravityで調整する
  • 3 tips
    • 3.1 Blenderにはキャラクタの特定部位と別メッシュの動きを同期させるConstraint機能があるが、Babylon.jsでは未対応
    • 3.2 attachToBoneでswordの位置が意図と異なる場合、Graph Viewでswordの初期位置や角度を調整するとよい
  • 4. おわりに
続きを読む

Ready Player Meのキャラクタモデルに複数のアニメーションを割り当てて、Babylon.js で再生する方法

先日Babylon.js のGUI Editorを試した頃から、何かのゲームっぽいものを一通り作成しようと思い、キャラクタを動かすタイプのゲーム開発を進めています。

今回は、キャラクタに複数のアニメーションを割り当ててBabylon.js で表示する方法を解説します。

使用した環境

・Blender 2.9.3

  • 1. Babylon.jsで再生可能な、アニメーション付きのキャラクター3DCGモデルを作るには
  • 2. 具体的な手順
    • 2.1 Ready Player Meを使ってキャラクターモデルを生成
    • 2.2 Blenderを使ってglbをfbxとして出力
    • 2.3 Adobe Mixamoを使ってfbxにアニメーションを割り当て
    • 2.4 Blenderでアニメーション付きfbxを読み込み、NLAで元々のglb形式のキャラクタに割り当て
  • 3. Babylon.js Sandboxで確認してみる
  • 4. おわりに
続きを読む

Blenderでライトマップベイクを試してBabylon.jsで確認する方法 後編

前回の続きです。

www.crossroad-tech.com

今回はBlenderでライトマップベイクをするところから説明します。
試した環境

  • Blender 2.93

  • Babylon.js 5.5.5

  • 1. ライトマップベイクとは?
  • 2. ライトマップベイクを実行する前にUV展開しておく
  • 3. ライトマップベイクを実行する
  • 4. Tips
    • 4.1 テクスチャが存在しないとライトマップベイクができない
    • 4.2 さらに光沢を出して質感を向上させる方法
    • 4.3 ライトマップベイクしたら真っ黒になる場合
    • 4.4 ライトマップベイクしたらテクスチャの模様がおかしくなった場合
  • 5. おわりに
続きを読む

Blenderでライトマップベイクを試してBabylon.jsで確認する方法 前編

以前も何度か書いたことがありますが、フォトリアルな表現が好きでもっとスキルをつけたいと思っています。

www.crossroad-tech.com

www.crossroad-tech.com

www.crossroad-tech.com

www.crossroad-tech.com

今回は最終的にBabylon.jsできれいな表現を試すため、Blenderを中心に調べたことをまとめました。

試した環境

  • Blender 2.93

  • Babylon.js 5.5.5 (後編の記事で使います)

  • 1. Babylon.jsできれいな表現をする方法の1つとしてpre-baked lightingが提案されている
  • 2. 3DCGモデルを準備する
  • 3. おわりに
続きを読む

Blenderでモーション付きアバターをglb形式で出力する方法

前回、plaskというサービスを使って生成したモーションデータをBlender上でアバターに割り当てる手順を説明しました。

www.crossroad-tech.com

このデータを出力すれば、別のツールでアバターを動かすことができます。今回、glb形式で出力したかったのですが、簡単にはできませんでした。

そこで、この記事ではglb形式でモーション付きアバターを出力する方法を解説します。

使用した環境

・Blender2.93

・glTF Viewer

  • 1. 単純にexport > glbを実行しただけだと、アニメーションがエクスポートされなかった
  • 2. Collectionの中にアバターとアニメーションデータを全て格納し、Active Collectionを選択してglb形式で出力する
  • 3. 不要なアニメーションデータを削除する、あるいはアニメーションデータを追加するときは NLA Editorで設定する
  • 4. Babylon Sandboxでも再生できるが、再生手順に注意する必要がある
  • おわりに
続きを読む

Plaskで取得したbvh形式モーションをglb形式のアバターに適用させる方法

数ヶ月前より、Plaskというサービスが出ています。

Plask

これは、スマートフォンなどのカメラで撮影した人の動き (モーション) をアップロードすると、Humanoidアバターにモーションを割り当ててくれるWebサービスです。

割り当てたモーション付きのアバターをダウンロードすることもできます。ただ、私の確認漏れかもしれませんが、plask上に任意のアバターをアップロードしてモーションを割り当てようとしたのですが、うまくいきませんでした。

そこで、今回はplaskで生成されたモーションデータをBlenderを使ってglb形式のアバターに割り当てる方法をまとめました。

なお、今回のまとめは、WebGL系などUnityではない開発環境を使っている方向けです。Unityを使っている場合はこのような手順を実行しなくても簡単にモーションデータを割り当てることができます。これについても後ほど紹介します。

今回使用した環境

・Unity 2019.4.12f1

・Blender2.93

・アバター作成はReady Player Meを使用

  • 1. Plaskでできること
  • 2. Plaskを使うための準備と基本的な使い方
  • 3. ざっと調べてわかったこと
    • 3.1 2022/3/26時点では、任意のアバターにモーションを割り当てることができない
    • 3.2 2022/3/26時点では、エクスポートできるのは、プリセットアバター and/or 生成モーションのみ
    • 3.3 UnityとUnreal Engineの中であればプリセットアバター and/or 生成モーションを使って、任意のアバターにモーションを割り当てることができる
  • 4. bvh形式モーションをglb形式のアバターに適用させる手順
    • 4.1 Plaskからbvh形式のモーションをexportする
    • 4.2 Blenderでbvh形式のモーションをimportする
    • 4.3 bvh形式モーションとglb形式のアバターそれぞれでOrigin to Geometryする
    • 4.4 BlenderのMotion Capture Toolsを使って、bvh形式のモーションをglb形式のアバターに割り当てる
  • 5. おわりに

続きを読む

Blender3.0のVirtual RealityモードをQuest2で試してみました

以前書いた通り、Blenderは2.83よりVRモードが追加されています。

www.crossroad-tech.com

これを使うと、WindowsPCのBlenderで作ったCGをVRヘッドセットを装着して直接確認することができます。以前試したときはOculus Quset CV1で試しましたが、今回はQuest2で試してみました。その時の手順などを解説します。

なお、BlenderのVRモードの基本的な使い方は上記の記事を参照ください。

試した環境 Quest2 (v35.0)
PC (NVIDIA GTX 980)
- Windows 10 Pro (20H2)
- Blender 3.0
- Oculus アプリ (v35.0)

  • 1. Quest2で試すための準備
  • 2. Blender 3.0のVRモード
  • 3. Quest2でBlender 3.0のVRモードを使う手順
  • 4. おわりに
続きを読む

【2021/7/25 位置補正方法の記事リンクを追記】Blender2.9を使って、読み込み、表示がうまくいかないPLATEAUの3DCGモデルを自動補正する方法について

最近、Babylon.js Editorのテンプレートプロジェクトを作っています。とくに、WebXRコンテンツがEditorで作れるようにとおもって、PLATEAUの3DCGモデルを使ってWebXR (immersive-vr) でウォークスルーができる仕組みを作ろうと思いました。
しかし、Babylon.js EditorでPLATEAUの3DCGモデルを表示させると、未加工だといくつかの問題があって簡単に使用できませんでした。また、途中でスクリーンショットを紹介しますが、Three.js EditorやGodot Engineでも同じ状態です。

そこで、Blenderを使ってそれらの問題を自動的に補正できるスクリプトを作っています。まだやりたいことが全てできていませんが、Three.js EditorやGodot Engineなどの他のツールでも有効と思われますので、現時点のものをいったん共有します。使用しているBlenderのバージョンは2.93です。

  • 1. PLATEAUの3DCGモデルをBabylon.js Editorでそのまま読み込むと発生する問題点
    • 1.1 座標が全て0, 0, 0になっていて、位置関係がわかりづらい
    • 1.2 建物の壁など、細かい単位でメッシュが分かれている
    • 1.3 都心部の3DCGモデルは1つのfbxで100MBを超えるものもあり、読み込み/書き出し失敗することがある
  • 2. 対応方針
  • 3. 現在の対応状況
  • 4. おわりに
続きを読む