2012年5月28日月曜日

Ver3.1 Beta1の改良点(2)

残りの主な改良点を紹介します。

Catmull-Clark曲面を表示しているときに分割後の面がどのようになるかをワイヤー表示によって知ることができるようになりました。ワイヤー表示が邪魔な場合、メニュー「表示」「曲面ワイヤー表示」をOFFにすれば従来通りに表示できます。ただし、曲面タイプ1・2はそもそもスムージング表示ができないので、ワイヤー表示も対応してません。


また、オブジェクトパネルが改良されました。一見しただけでは特に変わっていないですが、複製や階層を変更したときに、子階層も連動して変更されるようになりました。また、リストを複数選択ができるようになったので、複数選択した状態で一括して削除したり、右クリックメニューで同じ曲面や鏡面状態を設定することができます。ただし、従来Ctrl/Shiftキーに割り当てられていた頂点・面の選択操作と重複してしまったので、こちらはAltキーも押す必要があります。・・・少し不便かも?正式リリースまでにさらに変更するかもしれません。

ファイル入出力も強化されています。まず、STL(Stereolithography)形式での出力がサポートされました。最近3Dプリンタ関連で問い合わせが多いので対応しましたが、プラグインとして実装しているので、Ver3.0系の次のリリースにも同梱予定です。入力のほうも必要でしょうか?要検討かもしれません。また、マッピング画像としてTIFF形式もサポートしました。

その他、
  • 回転コマンドで数値入力ダイアログを表示したまま操作できるようになった
  • べベルや角の丸めを実行したときにUVができるだけ変わらないようになった
  • 選択コマンドのルートで辺の選択、ブラシで面の選択もできるようになった
など、ここには書ききれない細かい点も色々見直しを行っています。

今回のベータ版ではまだ見直しが必要と思われる箇所のほんの一部を改良したにすぎません。おそらくコマンド1つにそんな中途箇所が必ず1つ以上あるように思っています。Ver3.1では大幅な変更は考えていないので、GUIの大改良が必要なところまでは手は回りませんし、今回改良を加えた箇所でもまだ中途半端な部分が残っていますが、正式リリースまでにさらにかゆい個所に手が届くようにしていきます。

Ver3.1 Beta1の改良点(1)

主な新機能については既に書いた通りですが、既存機能の改良点も含めて個別に紹介していきます。

まず初めにバンプマップと法線マップについて。Ver1.0の頃から材質パネルには「凸凹マップ」の設定欄がありましたが、これを設定しても画面には何にも反映されませんでした。しかし、今回やっとこの凸凹マップが使用される時がきました。


例えば上のような白地に黒丸を描いただけのグレースケール画像を用意し、このファイルを材質の凸凹マッピング欄に指定します。そして立方体にこの材質を貼りつけると、白色の箇所が高く、黒色が低く見えるような凹凸が陰影として付きます。
 
  
 これがバンプマップです。ただ、実際に表面が盛り上がったり押し下がったりしているわけでないので、角度を変更しても平面のままになります。

このバンプマップは内部で自動的に法線マップに変換されます。ペイントパネルを開いて凸凹マップを表示すると、青っぽい背景に緑や赤のふちがついたようなカラー画像が表示されます。

 

これが法線マップです。材質パネルの凸凹マップ欄には初めからこのカラー化された法線マップ用の画像を指定することもできます。指定したファイルが8bitグレースケール画像であればバンプマップ、それ以外の画像が法線マップとして取り扱われます。

ところでこの法線マップですが、他のソフトとうまく相互互換できるかあまり検証できておりません。もしかしたら影の付き方が異なる(特に上下が反転する)可能性があるので、他のソフトでそのまま読めた、またはちょっと違うというのをコメントいただけると非常に助かるのですが。

また、現状ではグレースケールのバンプマップのまま編集することはできません。一応法線マップをペイントすることはできるのですが、直接編集するのも難しそうなので、今後の検討課題です。

Ver3.1 Beta1用のSDK

今回のSDKで頂点ごとに任意のデータをプラグインから割り当てることができるようになりました。これにより、例えばボーンやモーフに使用されるウェイトなどのデータを頂点に容易に割り当てることが出来ます。オブジェクトが複製されたときにはユーザーデータの内容もそのまま複製されます。

使用方法ですが残念ながらサンプルがありませんので、以下に簡単に記載します。

MQDocument::CreateVertexUserData()
まずこの関数を最初に呼び出して、頂点ユーザーデータIDを作成します。頂点ごとに割り当てるデータのサイズはここで指定します。複数回呼び出すと、複数のユーザーデータを管理できます。

MQObject::AllocVertexUserData()
頂点ユーザーデータIDに対応するメモリ領域をオブジェクトに確保します。同じIDで複数回呼び出しても確保される領域は1つだけなので、ユーザーデータの取得・設定の前にとりあえず毎回呼び出しても問題ありません。

MQObject::SetVertexUserData()
指定した頂点にユーザーデータを設定します。

MQObject::GetVertexUserData()
頂点に設定されたユーザーデータを取得します。

基本はこの4つです。あと解放用の関数にMQDocument::DeleteVertexUserData()とMQObject::FreeVertexUserData()がありますが、ドキュメント・オブジェクトの削除時に自動的に解放されるので、必ず呼び出さないといけないということはありません。

ただし、まだ現時点ではテスト実装なので、SDKの仕様については今後変更になる可能性が大です。特にウェイトを割り当てる目的だと頂点ごとに固定長ではなく可変長のデータサイズが必要になることを考慮しても、仕様として中途半端な気がしています。ですので、試しに実装してみて速度面などに問題がないか、あるいは仕様についての提言などをコメントまたはSDK用BBSにいただけると幸いです。何の意見もなければ・・・見送りにするかもしれません。

また、このBeta版用のSDKで作成したプラグインは配布しないでください。配布すると仕様変更に対応できなくなるので危険です。

※5/28 23:40 ヘッダが一部おかしかったので差し替え版mqsdk310_beta1_a.zipを用意しました。

Metasequoia Ver3.1 Beta1 公開

Ver3.0の後継バージョンの最初のベータ版を「βサイト」にて公開しました。

主な新機能は、

  • 法線マップ、バンプマップの表示
  • Catmull-Clark曲線のワイヤー表示
  • TIFF画像の入出力
  • STLファイルの出力
  • SDKからの頂点ユーザーデータへのアクセス
です。また、既存のコマンドの改良も含めて十数件の変更点が今回のリリースには含まれています。

個別の内容についての詳細は別記事として後ほど記載します。

2012年5月23日水曜日

Ver3.1鋭意開発中

以前のエントリで既に書きましたが、Ver3.1を夏~秋にリリース予定で、現在進行形で開発が進んでいます。

Ver3.1では大きな改良は行いませんが、作りこみが甘くて完成度が低いままになっている機能、特にVer2.4あたりから結構あらが目立つようになってきたので、それらのブラッシュアップが中心になります。時間が取れないために積み残しとしてソースコード内にTODOを記載している箇所が結構あるので、まずはそれらの消化と、あとはBBSに書かれている要望(といっても件数が多すぎるのでその一部)への対応となります。

最初のベータ版は今月末か来月初めくらいを予定しています。頂点への任意データ割り当てのテスト用にSDKもベータ版を出します。

例えばちょっとした部分で毎回同じ操作をするのが面倒とかいうものは早期に対応していきたいので、もし何か意見ありましたら不具合・要望掲示板か、このブログのコメント欄へお願いします。

2012年5月21日月曜日

10年使える設計

Metasequoiaの開発を始めたのは1998年ですが、その前年の1997年にDirectX 5がリリースされ、またNVIDIAからRIVA128が発売されており、セガサターンやPlayStationなど家庭用ゲーム機に後れを取っていたWindowsの3D性能が飛躍的に上がりました。また、Delphiの技術をベースにC++でのRAD開発に対応した初代C++BuilderがBorlandから発売されたのもこの年です。

当時は学生で割と時間があり、まさに3Dのソフトを作る土壌が整ったわけで、C++Builder + DirectX5を使って1999年にVer1.0をリリースすることができました。

それから13年経ち、今でもC++BuilderとDirectXの組み合わせでMetasequoiaの開発は続いており、その間大きな設計変更を行うこともありませんでした。

学生の頃の設計で10年以上現役でいられたのは運が良かったかもしれません。Windows自体が基礎設計を変えずに互換性を維持してきたことが大きいと思います。しかし、マルチコアCPUやGPU、あるいはiPadなどのタブレット端末の登場など、当時はなかった要素が増えてきた現在において、学生の頃のものだとやはり素人作業というか、これ以上の小手先の改良はそろそろ限界が来ているようです。

Ver3.0でも多少の見直しを行って数倍の高速化を果たしましたが、それでも手軽に扱えるのはせいぜい20~30万ポリゴン程度。100万以上のポリゴンを扱うとなると、基本設計を見直す必要がありそうです。

どうせ再設計するなら今後10年は使えるようなものにしたい。検証はまだこれからですが、最新のPCでGPUを積極活用すればたぶん数百万ポリゴンくらいでも扱えるかなという期待感があります。GPUを活用すれば10年使えるという単純なものでもないですが、先月までは妄想レベルでしかなかったことに今ようやく取り掛かれるようになってちょっと嬉しいのです。もちろんコアの再設計なんて容易なものではなく、これから艱難辛苦が待っているのですが。

2012年5月16日水曜日

今後の開発計画

開発体制が今は整っていないというか本格稼働にはほど遠い状況なので、今後どれくらいのペースで改良を進められるか見積りが立てにくいため、ロードマップというほどでもありませんが、まずはVer3.1を夏~秋くらいにリリース、Ver4.0を来年前半くらいにリリースできればと考えています。

Ver3.1ではVer3.0で手が届かなかった箇所の手直しをするくらいで大きな変更は考えていませんが、新機能の一つとして法線マップ表示が決まっています。表示のみで編集ができないとあまり意味がないかもしれませんが、リアルタイムプレビューの強化という方向性でその第一段となります。他にも細かい改良をいくらか加えていきますが、必要に応じてVer3.2も出るかもしれません。

一方Ver4.0では内部コアの書き直しを含めて大幅な改良を予定しています。開発環境をVisual Studioに移行し、GUI用のツールキットもQtを採用する方向で検討を進めています。Qtはまだ触り始めたばかりですが、かなりの好感触で、VCLを無理に使い続けるよりも将来性がありそうです。グラフィック系のソフトでも大手ではMayaやPhotoshop Elementsなど、個人レベルでもFireAlpacaで使用されたりと、実績の高さからも安心感がありますね。最近Nokiaがちょっと色々なのと、オープンソース版ではなく商用版を選ぶと価格がかなり高いのは気になりますが。

大きな機能については基礎研究が必要な要素が多く、実際に何が搭載できそうかまだまだ見通しが立っていませんが、UV編集やスカルプトあたりは特に重点強化していきたい箇所です。スカルプトは2Dで言えばドット絵に対する水彩塗りのようなもの。90年代前半くらいまではPCで絵を描く=ドット絵を編集する意味でしたが、今ではドット絵編集は携帯向けコンテンツなど限定的な分野にとどまるように、遠くない将来には頂点1つ1つを操作してちまちまポリゴン編集するのも限られたケースだけになるのではないかと予想しています。

細かい改良については少し前にも書きましたが、ほとんどBBSからピックアップします。しかし、件数が多すぎて過去ログをすべて眺めて要望・改良案をまとめるだけでも大変…。検索機能もない旧式のBBSを使い続けるのもそろそろ限界かもしれません。

2012年5月11日金曜日

Metasequoia Ver3.0.2公開

前回の更新から3日しか経っていませんが、ある程度の数の修正となったので、最新版としてVer3.0.2を公開しました。

今回の更新でDAE出力時にテクスチャのV方向を反転するかどうか指定できるようになりました。ただ、他の出力とは異なりダイアログの外観が異なり、また英語表記となります。

また、テクスチャのファイルを指定するとき、そのファイルがMQOファイルと同じか下のフォルダにある場合、MQOファイルのフォルダをルートとした相対パスで設定されるようになりました。

スタイルファイルの追加と更新もありますので、最新版をダウンロードしてご利用ください。

短いスパンでの公開が続きましたが、致命的な不具合が発覚しない限りは次は少し間隔をあけます。

2012年5月10日木曜日

窓の杜で紹介されました

紹介URLはこちらです。
http://www.forest.impress.co.jp/docs/news/20120509_531400.html

どうでもいいことですが、大手ニュースサイトは大抵GWは休みだし、個人も旅行行ったりでGW中はWebを見ない人も多いので、即時性の情報伝達を狙うなら大きな発表はGW明けにしたほうがいいのかもしれないと思いました。

紹介記事中にもありますが、今後バージョンアップのペースは早くなります。先日Ver3.0.1を出したばかりですが、さらなる複数の細かい不具合修正を施したVer3.0.2も今週中にリリース予定です。細かい不具合というのはその機能を使わない人にとっては関係ないことも多く、あまりに頻度が多いとバージョンアップが面倒に思われることすらありますが、やはり積み重ねとして修正を行うことで信頼性を勝ち取ることが、特にオンラインで配布するソフトウェア開発にとっては重要なことだと思います。

2012年5月7日月曜日

Metasequoia Ver3.0.1公開

一定の条件のもとでCatmull-Clark表示するとエラーが発生することがある不具合を修正したVer3.0.1を公開しました。


専業化してから初のリリースとなります。BBSへの報告に基づいて判明した不具合を早急に修正しました。以前はある程度まとまってから不具合修正版を出していましたが、今後はエラーが発生するなど重要度の高い不具合については出来るだけ早く修正版をリリースしていきます。


あと、今回のリリースではついでですが細かい改良も1件だけですが行っています。これもまたBBSに投稿があったものを取り入れました。大きい改良案については自分で方向性を立てて考えていますが、細かい改良についてはほとんどBBSに書き込まれた要望をそのまま採用しています。実際に日々つかっている方からの意見が重要であり、使いやすさというのは細かい改良の積み重ねによって成り立つと考えています。


開発の時間も十分にありますので、(BBSにこれまで書かれたものの約7割を占める)従来なら時間的に無理だった改良案も今後は積極的に取り入れて行きたいと思います。

月曜日

専業化してから初めての月曜日です。

今日は単に月曜だけではなくGW明けということもあり、GW期間中に銀行口座に送金いただいた分がすべて午前9時前後に入金されます。以前ならとっくに会社に行っていた時間なので、実際にシリアルを発行するのが最速でもその日の夜、あるいは仕事で疲れてPC起動せずに寝るときは翌日以降になっていましたが、今日はもう登録フォームをいただいた分はすべて処理を完了しました。(登録フォームをまだいただいていない方は早めにお願いします)

専業化のメリットの一つはメールでの事務処理の対応が速くなることです。そして、今日はこれから丸一日開発に費やせる訳で、もう一つのメリットは開発ペースの向上にあります。ただ、どんな内容の開発をすべきを誤るといくら時間があっても足りません。市販ソフトが数人〜数十人程度で開発されているのに対し、こちらは今のところ自分一人なのですから。

2012年5月6日日曜日

ブログを移転しました

「専業CGソフト屋のブログ」を始めました。

別に前のブログのままでも良かったのですが、タイトルを変えるだけよりかは、せっかくだから新しいブログを使ってみたいというのが移転の主な理由です。最近流行の要素を取り入れるのも情報の多さなどの面で楽かなと思い、移転先をBloggerにしました。

古いブログの内容は引き継いでいません。バージョンアップなどの告知がメインで、あまり大した内容のものはないと思いますが、消す必要性もないので前のはそのまま残しています。もし昔のものを参照したいときは右側のリンクから旧ブログをたどってください。

さて、以前の会社勤めしていた頃だとそもそも家でPCを触る時間も限られ、ブログを更新する時間もありませんでしたが、専業となった今は自由に時間を割り当てることができるようになりました。日々書いていくネタもそれほどあるわけではありませんが、Metasequoiaやプログラミングのこと、あるいはもっと雑多な色々について、多少なりとも書いて行ければと思います。

Bloggerを使うのは初めてなので、あまり細かいことがまだわかっていません。レイアウトの調整等もまだ最低限しかしていないので、今後少しずつ変えていきます。設定の不備などもあるかもしれませんので、何かお気づきの点とか、あともっとこうしたほうがいいなどの意見があれば、コメントいただけると幸いです。よろしくお願いいたします。