Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

【Unite 2017 Tokyo】3次元CAD VR化最速ツールの秘密

1,631 views

Published on

講演者:高田 知典(DVERSE Inc.)

こんな人におすすめ
・VR開発に興味がある人
・Unityをビジネス用途で使いたい人
・ゲーム/コンテンツの海外展開に興味がある人

受講者が得られる知見
・VRのパフォーマンスチューニング
・ビジネス向けVRソフトウェアの設計勘所

Published in: Technology
  • Be the first to comment

【Unite 2017 Tokyo】3次元CAD VR化最速ツールの秘密

  1. 1. CTO, DVERSE Inc.
  2. 2. 3 CAD VR
  3. 3. • SYMMETRY • SYMMETRY alpha • SYMMETRY
  4. 4. SYMMETRY
  5. 5. DVERSE Inc.
  6. 6. SYMMETRY VR • IT BIM, i-Construction • VR http://symmetryvr.com/
  7. 7. https://twitter.com/tipatat/status/839639362572800001
  8. 8. SYMMETRY alpha HTC Vive SketchUp 3D CAD VR • 2017/02/14 Steam • 90 • CAD VR http://store.steampowered.com/app/585340/
  9. 9. 3D Basecamp 2016: June 13-15 in Steamboat Springs ※SketchUp ユーザの2年に1度のお祭り(コロラド州) AIA Conference on Architecture 2017 April 27-29, Orlando ※アメリカ建築家協会主催の展示会(フロリダ州) グローバル市場を獲りに行く
  10. 10. SYMMETRY alpha
  11. 11. 3 • CAD⇒VR • •
  12. 12. CAD⇒VR CADで 設計 VRで確 認 ⇒ VDC ( Virtual Design and Construction ) ⇒ VR
  13. 13. A Cloud CAD VR Editor Convert Import 数分 Save
  14. 14. SYMMETRY alpha CAD (SketchUp) SYMMETRY alpha Import 数秒~数十秒 Save Import VR
  15. 15. 3 • CAD⇒VR • •
  16. 16. SYMMETRY alpha Import 数秒~数十秒
  17. 17. 0 10 20 30 40 50 60 インポート時間(秒)SketchUp ⇒ 50 3.5 Face:5567, Material:23, Layer:4, Group:233, Comp. Definition:21, Comp. Instance:511
  18. 18. SketchUp SDK (C++ DLL) Unity Native Plugin (C DLL) SYMMETRY alpha (C#) JSON Texture MaterialGameObject / Mesh SketchUp Unity
  19. 19. JSON シリアライズ JSON デシリアライズ テクスチャ 書き出し マテリアル生成 GameObject / Mesh 生成 SYMMETRY alpha VR ⇒ HTC Vive 90 fps ⇒ 1 0.011 ⇒ 1 1 Update() ⇒
  20. 20. Unity メリット デメリット コルーチン ・一つの関数を複数のフレームにまた がって処理できる ・プログラミングが楽 ・一つのCPUを時間分割するだけ ・効率良くフレームに分割するのが難しい マルチスレッド ・マルチコアCPUを生かして、複数の処 理を同時に実行できる ・Unityのフレームを意識しなくてよい ・Unity APIが使えない (Unity APIはメインスレッドでしか使えない) ・排他制御が必要 ⇒
  21. 21. JSON デシリアライズ テクスチャ 書き出し マテリアル生成 GameObject / Mesh 生成 Unity API の JsonUtility は、マルチスレッドに対応している! https://docs.unity3d.com/jp/current/Manual/JSONSerialization.html JSON シリアライズ Native Plugin を別ス レッドで呼び出す
  22. 22. JsonUtility • JSON ⇒ • Dictionary ⇒ Key/Value List ※ISerializationCallbackReceiver • 7 http://answers.unity3d.com/questions/1123311/jsonutilityfromjson-depth-limitation.html ⇒ SketchUp …
  23. 23. SketchUp Unity Transform SketchUp JSON SketchUp List ※ISerializationCallbackReceiver OnAfterDeserialize() ⇒ JsonUtility
  24. 24. JSON JSON I/O • JSON Pretty • JSON ⇒ JSON … ⇒ 1 public class SUComponentDefinition { public string N; public string Name { get { return N; } set { N = value; } }
  25. 25. SketchUp LZ4 BuildPipeline.BuildAssetBundles(outputPath, BuildAssetBundleOptions.ChunkBasedCompression | BuildAssetBundleOptions.ForceRebuildAssetBundle, EditorUserBuildSettings.activeBuildTarget);
  26. 26. GameObject yield ※ … ⇒ … ⇒ IEnumerator makeNode(SUNode node, GameObject nodeObject) { if (nodeIndex % 10 == 0) yield return null; makeMeshComponents(node, nodeObject); foreach (var group in node.Groups) { GameObject groupObject = new GameObject(); groupObject.transform.parent = nodeObject.transform; nodeIndex++; yield return makeNode(group, groupObject); } } IEnumerator makeNodes(SUModel model, GameObject modelObject) { Stack<SUNode> nodeStack = new Stack<SUNode>(); Stack<GameObject> nodeObjectStack = new Stack<GameObject>(); nodeStack.Push(model.NodeList[0]); nodeObjectStack.Push(modelObject); while (nodeStack.Count != 0) { if (nodeIndex % 10 == 0) yield return null; SUNode node = nodeStack.Peek(); GameObject nodeObject = nodeObjectStack.Peek(); 暗黒すぎるので略 Stack
  27. 27. 3 • CAD⇒VR • •
  28. 28. LOD (Level Of Detail) SketchUp LODGroup … ⇒ ⇒ GPU ⇒ SYMMETRY alpha
  29. 29. SYMMETRY
  30. 30. • SYMMETRY alpha • 2017 3Q • 2018 1Q • SYMMETRY ****** • 2017 4Q
  31. 31. http://dverse.me/ja/recruit/ • Unity • • • • 3D • UI / UX • VR • CAD • AI • /
  32. 32. Thank you!

×