見出し画像

軸の話 〜3DCGにつきものの座標系の違い45種まとめ〜

一つのツールやライブラリで完結していれば気にならないのですが、それらの間でデータを渡すとなると途端に厄介な壁として現れるのが「座標系」や「単位系」の話です。
今回は特に座標系に焦点を当てつつ、どれがどれを採用しているかざっと調べてみました。
20180831時点で 32種のツールとライブラリを挙げています > いました。20190226現在CAD系ツール等を足して43種になりました。20200228、Quixel Mixerを足して44種になりました。20200410、Buildboxを足して45種になりました。

また、内容的に延長線上にある「ジョイント(骨)の軸」を主題に、こちらの記事を書きました。併せてどうぞ。

***

座標系はいくつかのトピックがあります。大きくは「左手系か右手系か」と「Y-upかZ-upか」の二つ。第三のトピックとして「空間の『前』はどの軸か(Scene Forward)」がありますが、これは文字情報で検索しづらい(明言されていることが少ない)ため今回スルーしています。

左手系/右手系

理科で「電気」「磁気」「力」について学習した時、親指・人差し指・中指それぞれが直交するような手の形を作って確認する方法を教わりました。これはフレミング左手の法則による「ローレンツ力」の暗記法なのですが、この形を両手で作って、人差し指を上へ向けてください。実際にやってみると、厨二力の高まりを感じます。電・磁・力の話は重要ではなくこの手の形だけが欲しいのですが、このとき、親指から順に[X][Y][Z]と割り当ててください。これが、Y-upの左手系/右手系のサンプルになります。

(参考▲)こちらのスライドの6枚目をご覧ください

さらにそのまま中指を上に向けると、同様にZ-upの系が確認できます。XY平面になる親指・人差し指が自分からは見辛い方向になる点はご愛嬌。この状態で両手をまじまじ眺めていると、「俺に……こんな力が……?」みたいな気配が漂ってしまうのでおすすめです。

要は、ある軸をup軸にした時に「左手系と右手系では平面になる軸の関係が逆になる」というところがポイントです。

Y-up/Z-up

中学校の数学で、関数のグラフを書く時などにXY平面のお世話になりました。横軸がX(右方向がX+、左方向がX-)、縦軸がY(上方向がY+、下方向がY-)でした。
さて、平面的な二次元空間から発展して、立体的な三次元空間を表現することを考えます。グラフを書くようなXY平面のまま、あと三次元に足りない方向、奥行き方向に軸「Z軸」を追加。この時、上下方向を担当するのがY軸、すなわちY-upということになります。

Z-upは製図の分野が出発点となっています。製図された図面がまず水平面に置かれていて、それを見下ろす視点(向き)としてZ軸が加わることで、三次元空間が表現されました。このとき、上下方向はZ軸が担当 = Z-up ということになります。

こうした経緯から、CAD系ツールはZ-upが基本となっています。

各ツールの動向

ここからは、それぞれの座標系について確認していきます。CAD系はすでに触れたような流れからZ-up、さらにほとんど右手系、というのを見かけたため省略しています > 追記しました。

問題はいわゆるDCCツールで、「CAD系の方向を眺めているか、そうでもないのか」という距離感でY-upとZ-upが混在しているのがポイントです。今回の調べごとの最初のモチベーションもそこでした。CAD系(製図系)じゃない方向ってどっちなんだというと、グラフィック系ということになろうかと思います。後半で触れていますが、グラフィックライブラリは総じてY-up かつ Z軸がnear/far です。

どの順番で挙げていくか悩ましいところですが、まずは気分的な順番で列挙し、そのあと各視点別にソートしたいと思います。

ちなみに、X・Y・Z各軸はRGBに対応して色分けされることが一般的です。すなわち、赤矢印=X軸、緑矢印=Y軸、青矢印=Z軸、といった具合です。

Autodesk Maya

ゲーム・VFX等CG制作業務で広く使われています。ちなみに単位は cm(Preferenceから切り替えられます)

画像1

系:右手系 / up軸:Y

Autodesk 3ds Max

建築系の3ds Max Designというラインナップがあります。ちなみに単位は inch

系:右手系 / up軸:Z

参考 : http://www.aclockworkberry.com/world-coordinate-systems-in-3ds-max-unity-and-unreal-engine/

Autodesk Softimage

現場によっては根強く使われていると耳にします

系:右手系 / up軸:Y
参考 : https://download.autodesk.com/global/docs/softimage2013/en_us/userguide/index.html?url=files/xfo_intro_CartesianCoordinates.htm,topicNumber=d30e49986

Autodesk Motionbuilder

モーキャプ現場、アニメーション部門で広く使われています

系:右手系 / up軸:Y
参考 : http://help.autodesk.com/cloudhelp/2017/ENU/MotionBuilder/files/GUID-F90A9BF3-1A41-4FB7-AE58-53D73BDDEF6B.htm

SideFX Houdini

最近勢いがすごい

画像2

系:右手系 / up軸:Y
参考 : https://www.sidefx.com/docs/unreal/_coordinate_system.html

Blender

こちらも勢いがすごいですね。当記事公開時点では「2.8はもうちょいなのでまだ2.79使おう」だったのですが、その後2.8はリリースされ順調にバージョンを重ねています(20200228時点で2.82)。

画像3

系:右手系 / up軸:Z

MAXON CINEMA4D

建築・プロダクト系に強いイメージがあったのでZ-upかと思いました。が違いました。Liteも同じっぽい。

画像4

系:左手系 / up軸:Y
参考 : https://sites.google.com/site/c4dtutorialwiki/concepts/interface/viewport-navigation

Newtek LightWave3D

系:左手系 / up軸:Y
参考?(Terragenの話題ですがLWにも言及されていたため) : https://planetside.co.uk/forums/index.php?topic=9236.0

Foundry modo

Lightwaveの兄弟的な経緯を持ちますが、系は違います(あとFoundryは最近 "the" がとれました)

系:右手系 / up軸:Y
参考 : http://community.foundry.com/discuss/post/525103

Foundry KATANA

毛色が違いますがFoundryの流れで

系:右手系 / up軸:Y
参考 : https://learn.foundry.com/katana/3.0/Content/ug/using_viewer/manipulators.html

Foundry Nuke

KATANAよりさらに毛色が違いますがFoundryの流れで

系:右手系 / up軸:Y
参考 : https://learn.foundry.com/nuke/developers/80/ndkdevguide/3d/architecture.html

Blackmagic Fusion

毛色が違いますがNukeの流れで。
eyeonからBlackmagicに買収され無償化、さらにDavinci Resolve内に統合され「ページ」の一つとして収録されています(単体提供は終了 と当初書いていましたが、まだ提供されてました > LINK  / 20190613時点では、無償版は単体提供が終了(Resolveに統合)され、有償のFusion Studioが用意されています。)

画像5

系:右手系 / up軸:Y

Adobe Photoshop

毛色が違いますが2D系の流れで。3Dレイヤーというのがあったなと…。Z-upなのは図面的な志向かなと思います。

系:右手系 / up軸:Z
参考 : https://helpx.adobe.com/jp/photoshop/using/essential-3d-concepts-tools-photoshop.html#3d_axis_photoshop_extended

Adobe After Effects

Photoshopとも違うし同梱のCinema4D Liteとも違うけど、いいのかい?

系:右手系 / up軸:Y

Adobe Dimension

かつての Dimensions との関係が微妙に気になる。sどこいった

系:右手系 / up軸:Y

Pixologic ZBrush

正確には2.5次元であり、ワールド座標的な考え方とは厳密には外れるかもですが。コンセプト的にはPhotoshop同様Z-upもあり得たと思いますが、Y-up。

系:左手系 / up軸:Y
参考 (GIZMO3D) : http://docs.pixologic.com/user-guide/3d-modeling/modeling-basics/gizmo-3d/
参考? : http://www.zbrushcentral.com/showthread.php?5481-Zbrush-Coordinate-system&p=48078&viewfull=1#post48078

3D-Coat

スカルプト枠の流れで

画像6

系:右手系 / up軸:Y

Substance Designer

(Painterも多分おなじ)

画像7

系:右手系 / up軸:Y

Allegorithmicは2019年1月にAdobeに買収されました。Dimensionとかとの連携とか、いいことがあるといいですね。ライセンス形態の行く末は気になります。

Quixel Mixer

Photoshop用プラグインとして3Dメッシュへのペイント機能を提供していました。そしてAdobeはSubstanceと仲良くなり、Quixel自身はEpic Gamesに合流。

系:左手系 / up軸:Y

TouchDesigner

いにしえの時代にHoudiniから分化したノードベースリアルタイムツール

系:右手系 / up軸:Y

Shade3D

国産3DCGツール。参考にあげたwebページが謎の詳しさです。ちなみに 単位は mm

系:右手系 / up軸:Y
参考 : http://help.shade3d.jp/ja/support/ShadeHelp18/latest/Manual/Reference/200_FileIO_Related/OtherTools/00.html

Metasequoia

国産枠の流れで

系:右手系 /up軸:Y

Xismo

国産枠の流れで

画像8

系:右手系 / up軸:Y

Unity

ここからゲームエンジン枠

画像9

系:左手系 / up軸:Y
参考 : http://www.aclockworkberry.com/world-coordinate-systems-in-3ds-max-unity-and-unreal-engine/

UnrealEngine 4

Epic Gamesが開発。Epic製ゲームの開発にも使われているし、広く一般にも提供。ちなみに 単位は cm

画像10

系:左手系 / up軸:Z
参考 : http://www.aclockworkberry.com/world-coordinate-systems-in-3ds-max-unity-and-unreal-engine/

Autodesk Stingray

Bitsquid(スウェーデン)が開発していたのを2014年にAutodeskが買収、2015年夏Autodeskブランドとして提供開始、2018年1月に“完成”。

画像11

系:右手系 / up軸:Z

Amazon Lumberyard

Amazonの提供するゲームエンジン。Crytekからライセンスを受けCryENGINEのアーキテクチャをベースにしています。読みは「ランバーヤード」(材木置き場)。「らんべりー…ぁぁど?」ではないです(どうしてもberyの部分をベリーって読みそうになる自戒)

系:右手系 / up軸:Z
参考 : https://docs.aws.amazon.com/ja_jp/lumberyard/latest/gettingstartedguide/understanding-manipulating-moving.html
参考 : https://gamedev.amazon.com/forums/questions/62763/-lumberyard-11100-emotion-fx-reverse-joints-on-imp.html

CryENGINE

Lumberyardのベースになったエンジンですが、吸収されたとかではなくこちらも提供されています。系はLumberyardと同じ。

系:右手系 / up軸:Z
参考 : http://docs.cryengine.com/display/CEMANUAL/Coordinate+Systems

Xenko

2018年夏にSilicon Studioサポート下からMITでの公開に移行

系:右手系 / up軸:Y
参考 : https://doc.xenko.com/latest/jp/manual/game-studio/manage-entities.html

Godot

画像12

系:右手系 / up軸:Y
https://docs.godotengine.org/en/3.0/tutorials/3d/introduction_to_3d.html

Roblox Studio

プラットフォームでありゲーム開発環境でもあり、
けっこう規模が大きくさまざまな国に展開しているけど日本は袖にされててちょっと寂しい。開発環境のRoblox StudioはリボンUIを採用していて独自の世界観を打ち出してこないところはやさしさというか好感が持てます(リボンUIの良し悪しは一旦おいておいて)。

画像13

系:右手系 / up軸:Y
https://developer.roblox.com/articles/Creating-Your-First-Game

それにしてもスクリプト言語がluaなの珍しいなー そういえばluaな環境ほかにもあった気がするな、なんだっけ(´ε`;)
https://developer.roblox.com/articles/Intro-to-GUIs
あ、このチュートリアルに出てくるHexariaってそういえば前に見たことあった!
https://www.roblox.com/games/913614076/Hexaria-Beta-V0-71-1
開発、Bitsquid Gamesじゃないですか!(ここまで1セット)

Buildbox

no-codeで、ノードベースでモバイル向けゲームを開発できるそうです。

系:右手系 / up軸:Y
参考 : https://www.buildbox.com/help/buildbox-3-manual/tools/

OpenGL

ここからグラフィックAPI枠。Khronos Groupが策定、1992年初版リリース。

系:右手系 / up軸:Y
参考 : https://learnopengl.com/Getting-started/Coordinate-Systems

Microsoft DirectX

正確にはDirectXのなかのDirect3Dライブラリ。1996年のDirectX 2.0から。

系:左手系 / up軸:Y
参考 : https://docs.microsoft.com/en-us/windows/desktop/direct3d9/coordinate-systems

Metal

Apple製ローレベルグラフィクスAPI

系:左手系 / up軸:Y
参考 : https://mike-neko.github.io/blog/metal-coordinate/

Vulkan

OpenGLのKhronos GroupによるローレベルAPI

系:右手系 / up軸:Y
参考 : https://matthewwellings.com/blog/the-new-vulkan-coordinate-system/

Marvelous Designer

系:右手系 / up軸:Y
https://youtu.be/StW9nQdZZgg

Rhinoceros

系:右手系 / up軸:Z
https://discourse.mcneel.com/t/how-do-i-change-the-default-coordinate-system-in-rhino/15438/4

AutoCAD/Fusion360


系:右手系 / up軸:Z
https://www.niteco.co.jp/blog/setting-coordinate-system-3d-data/

※USC(user coordinate system)に登場する図はY-up
https://knowledge.autodesk.com/support/autocad/learn-explore/caas/CloudHelp/cloudhelp/2016/ENU/AutoCAD-Core/files/GUID-E658D5E7-EE5C-4A06-BF34-F71CDB363A71-htm.html

Vectorworks

系:右手系 / up軸:Z
https://youtu.be/7lHZKHYJrc0

Siemens NX

系:右手系 / up軸:Z
https://youtu.be/RXfUbCcUFw4

Solidworks

右Y…!!??(だからどうだということもないのですが)

系:右手系 / up軸:Y
https://youtu.be/Nmt1zZ5C2fs

そして作例がかわいい(?)
https://youtu.be/M08UWjaFtS0

ARCHICAD

系:右手系 / up軸:Z
https://helpcenter.graphisoft.co.jp/guides/archicad-20/archicad-20-reference-guide/%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C%E3%81%AE%E7%B4%B9%E4%BB%8B/%E5%8E%9F%E7%82%B9/
https://youtu.be/2_oAAackmgE

formZ

系:右手系 / up軸:Z
https://youtu.be/x0ipLHhbZjY


参考

早稲田大学 旧守屋研究室のドキュメントによると、

グラフィックスの分野では、右手系はワールド座標系とも呼ばれる。これに対し、左手系は視点座標系とも呼ばれ、座標原点に視点を置いた座標系である。

また、島田静雄氏「幾何モデリングの演習」の「投影変換で考える種々の座標系」によると

座標系多すぎわろた(脱力

所感

ここからは雑談パートです。いってみれば与太ですのでお暇な時にでもお付き合いください。

ここまで各種ツール・ライブラリの座標系をざっくり眺めてきました。後半はあたまが痺れてきたこともあり、見つけた資料を読み違えている可能性が普通にありそうですがとりあえず載せてみています。収集した内容を眺めつつ、6つのトピックにまとめてみたのが以下です。

見方1 : 最も多い「右手・Y-up」

「CAD系は右手・Z-up」という話を伺っていたのでここでは挙げておらず、そのためか右・Y群が比較的多く見えます。Fusion360・AutoCAD・Rhinoceros・SketchUPといったCAD系を足したら同じくらいの勢力になるでしょうか。OpenGLが右・Yを採用しており、その策定時点でこの群は十分な存在感を持っていたものと推察されます。どういう経緯で採択されたかなどを調べてみると面白そうですね。

右・Y群:Maya、SI、Motionbuilder、Houdini、modo、KATANA、Nuke、Fusion、AE、Dimension、3D-Coat、sbsD、Shade、Metasequoia、Xismo、Xenko、OpenGL、Vulkan、Godot、Roblox Studio、Buildbox、MD

見方2 : 左手系

OpenGL(右・Y)初版の4年後にリリースされたDirect3Dは、左・Yを採用しました。ここにもなんらかの経緯があることでしょうが、一つには先ほど挙げたドキュメントにもある「左手系は視点座標系とも呼ばれ、座標原点に視点を置いた座標系」というあたりなのでしょう。二大ゲームエンジン「Unity」「UE4」も左手系です。

左手系 : C4D(同Lite)、LW、ZB、Unity、UE4、DirectX、Metal、Quixel Mixer

見方3 : Z-up

見方1のとおりCAD系を省略している本稿、結果的にY-upが多くなっていますが、グラフィック系の本丸とも言えそうなゲームエンジン組はこぞってY-upなのでは?と思いきや、そうでもありません。UE4、Stingray、Lumberyard、CryENGINEと、挙げたものの中ではZ-upの方が多いと分かりました。またBlenderも元々はゲーム会社の内製ツールであった経緯を考えると、ゲーム分野でもZ-upは十分な位置を保っていると言えそうです。もともと2DアートツールであるZB、PsがZ-upなのは当然に見えますし、建築系ラインがあるMaxも同じく。他方、すでに触れましたがプロダクトや建築に親和性の高いC4DがY-upなのは多少意外に見えます(他にも手広いラインナップがあるため飛び抜けてびっくりということでもありません)

Z-up : Max、Blender、Photoshop、UE4、Stingray、Lumberyard、CryENGINE

見方4 : グラフィックAPI

全部Y-up、右・左が半々でした。

見方5 : ゲームエンジン

左手系はUnity、UE4。あとは右手系。Y-upはUnity、Xenko、Godot、Roblox、Buildbox。あとはZ-up。結果的に、DCCツールで一番多かった右・Yは、Xenkoのみ……でしたが追記したGodot、Roblox、Buildboxも。UE4が孤高の左・Zです。ゲームエンジンは内製エンジンというか自社ツールも少なくないので、それらの様子も見てみたいですね。

UE4は本稿で取り上げた中で唯一の左・Zです。そのため、知らずにデータを渡して何か困ったことになることもあるでしょう。ただ、毎年UE4を採用したゲームが多数開発され、その中にはAAAタイトルも多く含まれています。(完全に脇道ですが「世界で最も成功したゲームエンジン」とのギネス認定も。)珍しい仕様であることは確かでしょうが、それが根本的に問題になるとか、データ渡しに致命的だとかであれば、これほど採用されてはいないでしょう。少なくとも淘汰の対象になるようなマイノリティでは全くありません。
なんの話って感じですね。私もそう思います。

右・YであるMayaとの連携のために、EpicはA.R.T(Animation & Rigging Toolset)というツールを提供しています。

これを経由すると座標空間の違いを吸収できます。

画像14

▲こちらはBlender(2.79)のFBX書き出しのオプションです。up軸やScene Forwardが指定できます。またこういうのを吸収するaddonも配布されています。
たとえばこちら

見方6 : DCCツール

自分がMayaから3DCGにふれ始めたためかつい右・Yになじみを感じてしまいますが、そうでなければなにがどうということはなく、それぞれコミュニティを築いているわけです。系の違いを意識せずデータを渡してトラブルに巻き込まれるのは怖いですが、つねづね気をつけたいところです。

右・YでないDCCツール : Max、Blender(右・Z)、C4D、LW(左・Y)

(見方6.5:C4DとLWについて)

MAXONJapan様アカウントからの見解によりますと、この2ツールは共にAmiga出身なところが、同系になっている所以かも?とのこと。なるほど〜!(うまくtweetが貼れないなんで…💧)

見方7 : CAD系ツール

CAD系はやはり聞いていた通りの右・Zでした。ただ一人Solidworksを除いて。formZはCAD系なの?と言われるとちょっとわからないのですが、謳いとして建築設計・機械設計とあるので。。。
また、今回CAD系をざっと眺めてみて、WCSやUCS、さらにはデカルトじゃない座標系などなど複数の座標系が一緒に述べられていることが多く、ひょっとして日常的に様々に切り替えて使うことが一般的なんでしょうか?文化の違いを感じて新鮮でした。

右・Z : Rhinoceros、AutoCAD、Fusion360、Vectorworks、NX、ARCHICAD、formZ
右・Y : Solidworks

Solidworksの右Yは本稿内では最多勢力。DCCツール的思想にも寄ったCAD系といったところなのでしょうか。

おわりに

Twitterに投稿したあともいくつか追記しました。さらに20190226にも11種ほど追記しました。ひとまずはこれで完成としたいと思います。系の違うツールとのデータ渡しが発生しそうな時に、お役に立てていただければ幸いです。

***

記事はここで終わりです。お読みいただきありがとうございました。
もしよければ投げ銭いただけると嬉しいです。おまけとして、調べた内容の表とこの記事のepub版をDLいただけます。

あと、スクリーンショットが載っていないツールの、軸がわかる画像をご提供いただけると嬉しいです(笑

update 20190225 : MAXONJapan様ツイートを引用+C4Dスクリーンショット追加。文言微調整。
update 20190226 : CAD系ツールについて追記し43種になりました。

この続きをみるには

この続き: 190文字

軸の話 〜3DCGにつきものの座標系の違い45種まとめ〜

ks

1,000円

この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
note.user.nickname || note.user.urlname

記事の感想をマシュマロなどでいただけるとよろこびます🙌 https://marshmallow-qa.com/it_ks (サポートいただけるとさらによろこび投稿頻度が増えます🙌🙌)

39
技術本を作るサークル、Circke Qtのksです。 BOOTHにて既刊お求めいただけます > https://circleqt.booth.pm  普段はフリーランスCG屋、テクニカルライター、講師業などしています。

こちらでもピックアップされています

CG
CG
  • 21本

CG制作とその周辺情報などの記事をこちらにまとめています。

コメントを投稿するには、 ログイン または 会員登録 をする必要があります。