CTO, DVERSE Inc.
3 CAD VR
• SYMMETRY
• SYMMETRY alpha
• SYMMETRY
SYMMETRY
DVERSE Inc.
SYMMETRY
VR
• IT
BIM, i-Construction
• VR
http://symmetryvr.com/
https://twitter.com/tipatat/status/839639362572800001
SYMMETRY alpha
HTC Vive SketchUp 3D
CAD VR
• 2017/02/14 Steam
• 90
• CAD VR
http://store.steampowered.com/app/585340/
3D Basecamp 2016: June 13-15 in Steamboat Springs
※SketchUp ユーザの2年に1度のお祭り(コロラド州)
AIA Conference on Architecture 2017 April 27-29, Orlando
※アメリカ建築家協会主催の展示会(フロリダ州)
グローバル市場を獲りに行く
SYMMETRY alpha
3
• CAD⇒VR
•
•
CAD⇒VR
CADで
設計
VRで確
認
⇒
VDC ( Virtual Design and Construction )
⇒ VR
A
Cloud
CAD VR Editor
Convert
Import
数分
Save
SYMMETRY alpha
CAD (SketchUp) SYMMETRY alpha
Import
数秒~数十秒
Save
Import VR
3
• CAD⇒VR
•
•
SYMMETRY alpha
Import
数秒~数十秒
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
SketchUp SDK (C++ DLL)
Unity Native Plugin (C DLL)
SYMMETRY alpha (C#)
JSON
Texture
MaterialGameObject / Mesh
SketchUp
Unity
JSON
シリアライズ
JSON
デシリアライズ
テクスチャ
書き出し
マテリアル生成
GameObject /
Mesh 生成
SYMMETRY alpha VR
⇒ HTC Vive 90 fps
⇒ 1 0.011
⇒ 1 1 Update()
⇒
Unity
メリット デメリット
コルーチン ・一つの関数を複数のフレームにまた
がって処理できる
・プログラミングが楽
・一つのCPUを時間分割するだけ
・効率良くフレームに分割するのが難しい
マルチスレッド ・マルチコアCPUを生かして、複数の処
理を同時に実行できる
・Unityのフレームを意識しなくてよい
・Unity APIが使えない
(Unity APIはメインスレッドでしか使えない)
・排他制御が必要
⇒
JSON
デシリアライズ
テクスチャ
書き出し
マテリアル生成
GameObject /
Mesh 生成
Unity API の JsonUtility は、マルチスレッドに対応している!
https://docs.unity3d.com/jp/current/Manual/JSONSerialization.html
JSON
シリアライズ
Native Plugin を別ス
レッドで呼び出す
JsonUtility
• JSON
⇒
• Dictionary
⇒ Key/Value List
※ISerializationCallbackReceiver
• 7
http://answers.unity3d.com/questions/1123311/jsonutilityfromjson-depth-limitation.html
⇒ SketchUp …
SketchUp
Unity Transform
SketchUp
JSON
SketchUp
List
※ISerializationCallbackReceiver OnAfterDeserialize()
⇒ JsonUtility
JSON
JSON I/O
• JSON Pretty
• JSON
⇒ JSON …
⇒ 1
public class SUComponentDefinition {
public string N;
public string Name {
get { return N; }
set { N = value; }
}
SketchUp
LZ4
BuildPipeline.BuildAssetBundles(outputPath,
BuildAssetBundleOptions.ChunkBasedCompression |
BuildAssetBundleOptions.ForceRebuildAssetBundle,
EditorUserBuildSettings.activeBuildTarget);
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
3
• CAD⇒VR
•
•
LOD (Level Of Detail)
SketchUp LODGroup
…
⇒
⇒ GPU
⇒
SYMMETRY alpha
SYMMETRY
• SYMMETRY alpha
• 2017 3Q
• 2018 1Q
• SYMMETRY ******
• 2017 4Q
http://dverse.me/ja/recruit/
• Unity
•
•
•
• 3D
• UI / UX
• VR
• CAD
• AI
• /
Thank you!

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