Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PLATEAUの3DCGモデルをWebXRコンテンツ向けに調整するBlenderのPythonスクリプトについて

 PLATEAUの3DCGモデルをWebXRコンテンツ向けに調整するBlenderのPythonスクリプトについて

Eeac2f3b51b69b3cd6fb14ed348f0c6e?s=128

Limes2018

July 26, 2021
Tweet

Transcript

  1. 1 PLATEAUの3DCGモデルを WebXRコンテンツ向けに調整するBlenderの Pythonスクリプトについて | Limes | 2021.7.26

  2. 本⽇の概要 2 ・Project PLATEAU ・PLATEAUモデルをUnity以外の環境で 読み込むときの問題 ・Blender/Pythonスクリプトによる⾃動処理 ・おまけ:Godot Engineで動かしてみました

  3. Project PLATEAUとは? 3 PLATEAU は、国⼟交通省が進める 3D都市モデル整備・活 ⽤・オープンデータ化 のリーディングプロジェクトである。 都市活動のプラットフォームデータとして 3D都市モデルを整

    備し、 そのユースケースを創出。さらにこれをオープンデー タとして公開することで、誰もが⾃由に都市のデータを引き出 し、活⽤できるようになる。 Project PLATEAU | PLATEAU [プラトー] (mlit.go.jp)
  4. 4 PLATEAUについて 東京都23区を始め、⽇本全国の都市の3DCGモデルが gml, fbx, objの形式で取得可能 3D都市モデル「PLATEAU」から取得するファイルの構成と、Blenderで読み込んで確認する⽅法 - CrossRoad (crossroad-tech.com)

    Unityを使えば、fbx形式の3DCGモデル表⽰は簡単
  5. 5 軽くVRでウォークスルーをさせよう。 みんなUnityを使っているので、WebXRで使えるように しよう。 と思ったのですが、Unity以外では⾊々と問題があって うまくいきませんでした。

  6. 6 PLATEAUモデルをWebGLフレームワークで 読み込むときの問題 問題1:そもそも表⽰されない Babyon.js Editor

  7. 7 PLATEAUモデルをWebGLフレームワークで 読み込むときの問題 問題1:そもそも表⽰されない Godot Engine Three.js Editor

  8. 8 PLATEAUモデルをWebGLフレームワークで 読み込むときの問題 問題2:全オブジェクトのグローバル座標が(0,0,0)に なっていて、位置関係がよくわからない 異なるオブジェクトを選 択してもPositionが同じ

  9. 9 PLATEAUモデルをWebGLフレームワークで 読み込むときの問題 問題3:ちょっと確認したいだけの利⽤⽅法では、データ 量が⼤きい。 Babylon.js Editorでは、未補正のファイルの⼀部で読み 込みに失敗することがありました。

  10. 10 PLATEAUモデルをWebGLフレームワークで 読み込むときの問題と解決⽅針 # 問題 解決⽅針 1 そもそも表⽰されない 原点から遠すぎるので、適度に近づける 2

    全オブジェクトのグローバ ル座標が(0,0,0)になってい て、位置関係がよくわから ない 各オブジェクトのOriginをgeometryの重⼼ に合わせる 3 ちょっと確認したいだけの 利⽤⽅法では、データ量が ⼤きい。 崩れない程度にポリゴン数を下げる これらを解決するため、BlenderのPython読み込み機能 で⾃動補正する機能を実装しました。
  11. 11 Pythonスクリプトで実施できるようにしたこと ・個別にOrigin to Geometryを適⽤ →問題2を解決。各オブジェクトが固有のx, y, z値を持つ ・個別にAdd ModifierのDecimate

    (容量削減)を適⽤ →問題3を解決。いったん40%程度⼀律削減。調整可能 ・全オブジェクトのoriginと原点の距離を算出し、最も原 点から遠い距離のオブジェクトのxとy (Blenderはz-up) の値で各オブジェクトのx, yの値を引き算して原点付近に 移動→問題1を解決。
  12. 12 問題1の解決 原点 原点 原点から最も遠い オブジェクト a 全てのオブジェクトのx,y座標について、 で引き算 距離d

    𝑑 = 𝑥!"# $ + 𝑦!"# $ 𝑥!"# , 𝑦!"# 移動後の各オブジェクトの座標 (𝑥!"# − 𝑥, 𝑦!"# − 𝑦, 𝑧) x, yの値が70000などになっており、ドラッグで移 動はものすごく時間がかかる。Blenderだと複数 選択してInspectorから座標変更ができない 原点から最も遠いオブジェクトaのx, y座標で 引き算し、全オブジェクトを原点付近に集める
  13. 13 実際のPythonコード GitHubに公開済みです。 flushpot1125/automated_optimization_PLATEAUmodel (github.com)

  14. 14 Blenderで⾃動制御する例 Blenderでfbxを読み込むところから、変換できるように するところまでの動画を流します。 https://youtu.be/APV7epiRBI4 動画はYouTubeで公開済みです。

  15. 15 おまけ:Godot Engineで動かしてみました Godot Engineとは、OSSで提供されている3DCGコンテ ンツ開発環境。Win/Mac/iOS/Android/WebXR書き出 しが可能。Unityと似ている。 公式ドキュメントの⽇本語対応が充実している。 WebXR対応は、こりんさん (@korinVR)

    の記事がおすす めです。 Godot Engine VR開発メモ(Oculus Quest、SteamVR、WebXR対応) - フレームシンセシス (framesynthesis.jp)
  16. 16 Godot Engineで動かした例 発表時は動画を再⽣します。

  17. 17 ご静聴ありがとうございました。