モコモコフレンズの3DモデルをQuickDraw 3Dで鑑賞できなかったのでLLVMpipeも試した

まとめ: http://d.hatena.ne.jp/mjt/20150422/p1 From: http://www.columbia-games.com/3ds/mocomoco/
追記: https://twitter.com/c5h12/status/589522774823043072 上手くいった人も。

キャラクターデータ提供:見習い魔女とモコモコフレンズ

というわけでついに恐れていた日が来てしまった。。この記事は基本的にモデルのダウンロード→ネタ出し→執筆を1時間で済ませるという企画なんですが(自分のゲーム作らなきゃいけないし)、残念なことに今回は完全に失敗。。というわけで次回以降は収録というか事前にネタ出してから書こうと思います。。
というわけで一日一モコモコ3DSソフトの見習い魔女とモコモコフレンズのキャンペーンで提供されるモデルデータを色々な方法で鑑賞しよう企画。

Appleは今でこそ熱心なOpenGLの支援者ではあるが、当初はOpenGLではなく独自の描画システムQuickDraw 3D( http://en.wikipedia.org/wiki/QuickDraw_3D )を開発し、展開していた。
QuickDraw 3Dは初期のDirect3Dと同様に、それなりに熱心なシーン記述言語である3DMFを持っていた。このような高水準APIを持つのは当時の流行と言っても良く、他にもVRMLとか色々な環境が登場していた。
QD3Dは当時のAppleクロスプラットフォーム指向を反映するように実はWindows版が存在しWindowsMacで同じAPIを使うことができるクロスプラットフォーム3D APIとなっていた。Macの場合QuickDraw 3DはSystem 7.xで使用できる。実はMacOpenGLはSystem 8以降が必要なため、System 7.xでは唯一のサポートされた3DグラフィックスAPIでもある。ただし、System 7.x上の実行であってもPowerPCは必須となる。
通常のシステムではソフトウェアレンダリングとなるが、アクセラレータカードを追加したり、Windows上の場合はDirectX 5に対応したRAVEを使用することでハードウェアレンダリングもサポートしていた。

3DMFの生成

3DMF(3D MetaFile)はQuickDraw 3Dのモデルフォーマットで、現状では事実上死んでいるのでなかなかコンバータが無い。。今回はAccuTrans3D( http://www.micromouse.ca/ )を試用してみた。残念ながらAccuTrans3Dは複数マテリアルで構成されるオブジェクトの扱いが正しくないように見えるので、テクスチャ入りではうまく変換できなかった。

  1. まず、昨日と同様にopen3modでモデルを開き、wavefront .objに変換する
  2. TIFFテクスチャをPNGに変換する
  3. 生成された.mtlファイルを編集し、pngの方を指すようにする
  4. AccuTrans3Dを使用して3DMFに変換する

この段階では、正しく読めているように見える:

QuickDraw 3Dでの表示

QuickDraw 3D SDKを今から入手するのはなかなか難しい。QD3D_1.6 SDK _Windows.sit.hqxを捜して.sitにリネームし(BinHexされている場合はデコードして)、Mac上で展開するとWindows SDKのフォルダを得られる。QD3D 1.6 SDK - Windows\Debug DLLsにビューアアプリケーションが置いてある。

テクスチャのUVがかなり圧倒的に正しくない。
ちなみにQuickDraw 3Dは、ほぼ互換実装がQuesa( http://quesa.sourceforge.net/ )として存在するので、APIを知りたければそちらが使用できる。ただし、QuesaはRAVEを含まない(レンダリングOpenGLになる)。

おまけ: LLVMpipeを試す

翌日に回しても良かったけど、収まりの関係から諦めてここにメモしておく。

こんな感じに変更する必要があった。つまり、

  • シェーダで3.00 ESプロファイルを使用する
  • ESプロファイルでは精度指定が必須なので適当にhighp vec3とかhighp floatに置換する

LLVMpipeでは精度指定しても意味が無い気がする。

GL Vendor   : VMware, Inc.
GL Renderer : Gallium 0.4 on llvmpipe (LLVM 3.4, 256 bits)
GL Version  : 3.0 Mesa 10.3.7

挙動は普通。試したのはCygwin64だけど、GLEWのインストールも含めて全く問題無かった。実際にゲームとか動かしてみないとわからないかな。。

ソフトウェアレンダリングの愉しみと難しさ

というわけで3日に渡ってソフトウェアレンダラを取り上げてきたけど、やっぱり1時間枠だとコンバータとかを書いている暇が無いのでいろいろ難しい。
以前取り上げた( http://d.hatena.ne.jp/mjt/20140124/p1 )ように、世間にはまだまだかなりの数のソフトウェアレンダラが有る。Yeti3Dとかも取り上げたかったけど。。
古いソフトウェアレンダラはそもそも情報自体が散逸してしまって、使うだけでも試行錯誤が必要になってしまう。QuickDraw3Dも、通常の人間にはなかなか体験の機会は無いと思うとなんとも。。Ancient 3D枠でもうちょっと扱っていきたいところ。