goo blog サービス終了のお知らせ 

「ボクセルポリゴンな日々」 - UnityでMakersとVRをつなぐ挑戦 -

Unityプログラムで3DCGアセットデータをVRや3Dプリンターで利用可能にする最新技術や関連最新情報を紹介します。

3DCGモデルレリーフ立体出力化プログラムの最新開発進捗状況

2013年04月16日 20時06分07秒 | プログラム開発


当ブログをご覧下さる諸兄には大変不義理を致しましてすみません。
3月後半からずっと、表題のプログラム開発に没頭し更新を怠っておりました。

というのも、2月16日の記事で書かせて頂きました

「【速報】MMD等の映像用3DCGデータを立体出力可能にする自動変換プログラム開発報告。」

で紹介しました

「既存の3DCGデータをプログラム処理だけで立体出力可能なモデルに作り変える」

プログラムを具体的に利用可能にするための開発を続けて来ました。

最初公開したプログラムでは、立体出力可能な形状データは全て直方体の柱になっており、お世辞にもスマートな形状ではありませんでした。



これをスムーズな表面にするために直方体柱から格子状のポリゴンの組み合わせになるよう計算処理を変更していきました。

ところがはじめの頃は真っ黒けのモデルが出て来ました。



修正を加えるうちにどうにかまともなSTLファイルを出力できるようになって来ました。




こうなると、最大の目標である「フルカラー立体出力によるレリーフの作成」を達成したい欲望がメラメラと燃え上がってきました。

しかしそのためにまずプログラム自体をフルカラー表示可能にする必要がありました。

そこで手軽にフルカラー3DCG形状データを調達するためにメタセコイアMQO形式のファイルを読みこませる機能を実装するべく作業にとりかかりました。

こうしてなんとかテクスチャマッピングとスムーズシェーディング処理のための法線ベクトル補間計算まで実装を済ませました。






次に、現在制作中の初音ミクモデルが読み込める能力があるかどうか検証し、問題なく読み込めることを確認しました。



改めてミクのデータでレリーフ形状を取り出しにかかりましたが、最初は計算処理に不備があってまともに形状データを取り出せませんでした。
以下の画像は初期の出力結果(STLファイル)をメタセコイアで読み込ませたものです。



それらを解決し、なんとかレリーフ状の形状データの抽出ができるようになって来ました。






そして本日、最終目標である色情報データを反映した出力結果をメタセコイア形式(MQOファイル)で取り出すことが出来ました。




現状ではこのモデルはまだ左右が反転してる等の問題点がありますが、
それらを解決した上で裏側のポリゴンを作成して完全な閉空間(水が漏れないポリゴン空間)を作成しメタセコイアファイルとして出力します。

そしてこれを立体出力サービスで立体物化してみます。

その立体物をお披露目できる日もまもなくです。ご期待ください。(^^)


追伸:

その後左右反転版ができました。トップの画像のみ最新版で差し替えました。(2013-04-16 21:04:00)


【速報】MMD等の映像用3DCGデータを立体出力可能にする自動変換プログラム開発報告。

2013年02月16日 18時02分05秒 | プログラム開発



タイトルが少々長ったらしくて済みません。

3DCGデータはCADで作ったものでない限り、そのほとんどが直接3Dプリンターにかける事が出来ません。

例えばGoogleSketchUpで作成した3DCGデータや、MikuMikuDanceで利用できる3DCGモデルデータなどはほぼ全て直接3Dプリンターでは出力できない形状データになっています。

その理由は以前あにまさ式弱音ハクさん立体出力データ変換シリーズの最初で説明しましたが、「映像用3DCG形状データは"水漏れ"を意識していない」からです。



このように隙間が開いてると普通は水がこぼれてきます。そして3Dプリンターで立体出力する場合この隙間があるとエラーになるのです。

ところがMMDで使われる3DCGモデルデータは大抵の場合以下のように裏打ちの無い形状モデルとなっています。



これを以下のように裏打ちしなければ立体出力にはかけられません。




しかし当ブログをご覧の方ならば御存じのように、MMD等の形状モデルデータに裏打ち等のデータ修正をかける事は非常に時間と手間がかかります。

あにまさ式弱音ハクさんモデルの場合でもざっと2週間ほど修正作業を行なってやっと立体出力可能になったという経緯があります。

今回開発したプログラムはその過程を全てすっ飛ばし、プログラム処理だけで立体出力可能なモデルに作り変えるというある意味画期的なものなのです。

ここで再度冒頭の画像をご覧ください。



MeshLabに表示されたハク姉さんは左上の小さなウィンドウ(これがレリーフ化プログラムです)で表示されたハク姉さんの画像から再立体情報化したものです。

今回はプログラムの動作テストのためSTLファイルで作成したモノトーン画像から変換してます。将来的にはこれをMMD等の映像用3DCGデータを表示可能にし、そこからレリーフ形状へ変換可能にします。

現在モノトーンのモデルで検証してますが、勿論フルカラーやテクスチャマッピングされたモデルもそのカラーのまま再立体化出来ます。変換時ウィンドウのカラー画像を直接モデルにマッピングするだけでOKなのです。



ということでさっきのモデルを少し斜めから見た図です。見事に奥行きまでズドンとポリゴンが続いています。ここで再立体変換された形状データは閉空間を構成しますのでそのまま3Dプリンターに持っていって立体出力する事が出来ます。

それがこのアルゴリズムを設計した目的なのです。最終的にネット上に多く存在する映像用(=非立体出力対応)の3DCG形状データを直接レリーフ形状に変換します。



さらに顔部分を拡大した画像です。このように1ピクセルを直方体状に配置しているのが良く分かります。それ故にこのモデルは56万ポリゴンと言う数になっています。

現状直方体状にしているのは検証プログラムを組む上で手っとり早かっただけの理由です。各ピクセルの中心点をメッシュ状につなげばもっとポリゴン数を減らせます。


ということで、これからこのプロジェクトを本格的に立ち上げて立体出力を便利にしていきたいと思います。

「誰でもMakers」の時代はもうすぐです!(^^)

【Silverlightプログラミング】Silverlightの現在と未来、そして3DCGライブラリの今後

2011年06月20日 10時20分15秒 | プログラム開発
のっけからプログラミングの話題ですみません。
このブログでは日本国内で情報発信の少ないSilverlight関連の技術情報を載せていきたいと思っています。

というのも、私の本職はテクニカルライターだったりするからです。(汗)


・・・・・


前置きはともかく、Silverlightについてお話します。

Silverlightとはマイクロソフト社が提供するプログラム実行環境の呼称です。
Silverlightプログラムの開発はWindows上で行ないます。
開発環境はVisualStudio2010、使用言語はC#またはVisualBasicです。
(私はC#を選択していますので、以降のサンプルコードはC#での記述となります事をご了承ください。)

そもそも、VisulaStudio2010ではSilverlightを選択しなくてもC#だけでWindowsアプリケーション(=実行プログラム)が開発出来ます。
しかしここにSilverlightを介することで以下のメリットが生じます。

1.OSからプログラムを直接実行するのではなく、
  IEやFirefoxといったインターネットブラウザからURLを指定することで実行できる
  「Webアプリケーション」の開発が出来ます。
2.Webアプリケーションを開発することにより、
  Windows以外のOS(Mac等)でも実行可能なアプリケーションを
  配信する事が出来ます。
3.通常のC#プログラム開発と異なり、
  ユーザーインタフェースデザインと実行コード配置を分けてプログラムを開発することが出来ます。
  (ユーザーインタフェースデザインとは、
   画面上で表示されるボタンや画像・テキスト編集エリアなどの配置を決める情報の事です。)

これらのメリットはプログラム開発を飛躍的に向上します。
とりわけ2の項目は、今までならばWindows以外のOS環境で動くプログラムを開発する事を考えると、
その分の開発期間がWindows上で動くプログラムと同等以上にかかるというデメリットを一気に解消する
画期的なものです。
また1の「Webアプリケーション」という形態は、プログラムをわざわざPCにインストールしなくても
そのWebページを表示しただけで利用できる便利なものだったりします。
Webブラウズに慣れた人なら、「この仕事をするんだったらこのページを見よう。」とブックマークを探ってリンクをクリックするだけでプログラムが起動可能になります。
あるいはそうした機能を持つプログラムをブログ等に配置して呼び出すだけで、世界中のあっちこっちで利用されるようになるのです。

ただしデメリットも存在します。

1.大きなデータを扱えない。
  インターネットブラウザの監視下で実行されるため、メモリを扱う量が制限されます。
2.実行速度が通常のアプリケーションに比べて遅い。
  インターネットブラウザの監視下の元で実行されるため、プログラムの実行は少し遅くなります。
  加えてあらゆるOS上で実行可能にするためOSやCPUの違いを吸収する仕組みが働くので、
  それもプログラム実行を遅くする要因になります。
3.ローカルPC上のファイルの扱いに制限がある。
  ローカルPCに配置されたファイルの読み書きが出来ますが、
  ファイル選択ダイアログで同時に一つのファイルしか選んで読み書きを実行するよう
  操作が限定されています。

これらは従来のOSからの直接実行タイプのプログラムに比べて大きなハンデになります。
が、それでもWeb上でプログラムを直接選んで実行できるメリットはこれらのデメリットをカバーして余りあります。


このようにメリットの大きいSilverlightですが、
現行の公開バージョン4では、実は画像のような3DCGデータを表示する機能はありません。
現在開発用βバージョンが出始めたバージョン5では3DCGデータを表示するための機能である
「XNA」が搭載されていますが、バージョン5は一般公開利用が出来ない状況です。

そこで今回の開発ではSilverlight4でも利用できる3DCGライブラリ(Silverlightの機能を拡張するプログラム部品の事)を使って3DCGデータを表示する機能を付加しました。

その3DCGライブラリが「Balder」です。
現在α版ということですが、
他のSilverlight用3DCGライブラリに比べてプログラムの実装例が豊富だったので利用する事にしました。

とはいえ、日本国内でBalderを利用したプログラミング例がほぼ皆無に等しい状態ではあります。

そこで本開発に合わせてSilverlightにBalderを組み合わせたアプリケーションを開発していく上での
Tipsみたいなものも合わせて発信していく事にしました。
今後Silverlightで3DCGプログラムを開発してみたい人の参考になれば幸いです。

ところが、次期Silverlight5では正式な3DCGライブラリとして「XNA」が搭載されることになっています。
XNAはマイクロソフト社が自社の家庭用ゲーム機「XBOX360」の開発用に用意したプログラム開発ライブラリの名前です。このライブラリの一部機能が次のSilverlightでサポートされることが決まっています。

「それじゃ今からBalderつかっても意味ないんじゃないの?」

という疑問が出てくると思いますが、
そこはライブラリを使っていけばBalderの長所やXNAの問題点が見えてくるものです。
私としましては、今のところ両方をにらみながら開発を進めていきたいと考えています。


さらに説明を続けていくと文章がもっと長くなるので、この話題はいったんここで置く事にします。(汗)

今回のトップ画像は私がSilverlight5で作成したWebブラウザアプリケーションの実行例です。


追伸:

今後【Silverlightプログラミング】のタイトルテーマではC#ソースコード+XAMLコードが登場します。

次回は「はじめてのSilverlightで3DCGプログラム ~ Balder事始め(1)」でお送りします。(^^)

Web3DCG開発のブログ、はじめます!

2011年06月19日 19時33分22秒 | プログラム開発
今までtwitterを中心に開発情報を流してきましたが、
とりとめもなくログが流れていくだけなので、
この際と思いブログを開設する事にしました。

当面はかなり技術開発の専門性が高い内容になると思われますので、
読まれる方は心して下さい。(汗)

画像は現在開発中のプログラム「WebMQOViewer」です。
プログラムと言ってもWebブラウザ上で実行されるので、
使った人はそれがプログラムという認識はないと思います。

画像の例ではMacOS上のFirefoxで実行確認していますが、
Windows上で開発されております。
開発言語はC#で、Silverlight4という実行環境下で動いてます。
そのため、WindowsおよびMac上で利用できるようになっています。(^^)

しかしSilverlight4では公式には画像のような3DCGデータを表示する能力はサポートされていません。
それを補うために「Balder」という3DCG描画処理モジュールを導入しています。

これにより本プログラムではSilverlightを利用して3DCG形状データの表示が出来るのです。

まずは手始めに開発プログラムの現況をお伝え致しました。

それでは今後の開発報告にご期待下さい。(^^)


WebMQOViewerテストプログラム実行URL:
http://toymedia.jp/PublicSilverlightApp/WebMQOViewerBTestPage.html

正常実行後にはミニパトモデルが表示されます。(VPVP Wikiよりお借りいたしました。)

なお画像の巡音ルカモデルはアノマロかりんとう様からデバッグ用に預かったデータを元に描画したものです。