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

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

【Unity】ちょっとTipsがたまってきたので・・・。(汗)

2014年06月23日 19時00分52秒 | プログラム開発


画像は今まで作ったうちの3人姉妹ミクさんズです。

今回のブログの話題とは全然関係ありません。


・・・・・


話は変わって、

最近開発環境をUnityに移行して作業を進めています。

その中で、自分的にいくつかUnityを利用する上での注意点というかTipsてkなものをつぶやいてましたが、

そろそろまとめておいたほうが良い気がしてきだしたのでまとめてみます。


【Unity Tips?(1)】

開発ソースコードに#defineマクロを設定して、実行環境ごとにコンパイルするソースコードを分けたい場合は、

ソースファイルの先頭で#define文を設定する必要がありますが、ソースファイルが多いと埒が明きません。

そこで、以下の項目に設定します。

(メニュー)File->Build Setting

を選択して、出てきたダイアログの中から「Player Setting」のボタンを選択します。

すると、Inspector上にPlayer Setting項目が表示されますので、

その中から目標である実行環境の下の「Scripting define symbols」項目を編集し、

定義しておきたいマクロを登録します。

するとプロジェクトのソース全体にわたって定義されるマクロが使えます。


【Unity Tips(2)】

UnityにおけるMecanimで使われるAnimatorにおいては、

個別にアニメーションを停止させる機能がありません。

そこでAnimator全体で停止させる場合はanimator.speed=0とします。

GameObjectを個別に停止させる場合は、個別ステートIDを確保の上SetLayerWeight()メソッドを利用して

タイムウエイト値を0を設定します。


【Unity Tips?(3)】

Unity4以降に新設されたMecanimのAnimatorと、

Unity3以前からあるAnimationは機能的にも構造的にも全くの別物であると心得ましょう。

私はこれを理解するのに丸1日かかりました。(^^;)


【Unity Tips?(4)】

自作カスタムシェーダーはそのままビルドファイルを作っても、ビルドファイル上では実行されません。

これは、自作カスタムシェーダーが実行ファイルに組み込まれていないため読み込みエラーを発生し、

結果シェーダーが読み込まれてない時の表示のままレンダリングされてしまうからです。


これを回避するには、メニューからEdit->Project Setting->Graphicsを選択し、

InspectorのAlways included shadersに自作シェーダーを登録します。

こうすることでビルドされる実行ファイル内に自作カスタムシェーダーが登録されます。

特に質感に影響しないカメラ用シェーダーの場合、上記の設定に気をつける必要があります。


・・・・・


以上です。Unityプログラミングに興味が無い人には全くわからないブログですみません。

また、Unity初心者に優しく教えるたぐいの内容でないことも申し訳ございません。


ということで、最後もミクさんズの画像で締めておきます。(^^;)


EasyRecaster開発速報。(2013.05.12)

2013年05月12日 21時50分55秒 | プログラム開発



ようやく裏面形状の抽出に成功しました。

これに表面形状を加えて、両面立体化によるフィギュアに近いレリーフ形状の作成を目指します。


・・・ここしばらく開発等でまた日記が滞りがちになっていましたが、進捗がありましたので取り急ぎご報告させて頂きました。

この機能が完成次第改めてご報告させて頂きます。(^^)

EasyRecaster開発レポート。(2013.04.25) / そして雑感。(^^;)

2013年04月25日 21時03分39秒 | プログラム開発


EasyRecasterの開発状況についてですが、本日ようやくレリーフ処理結果がプログラムウィンドウ内に表示できるようになりました。

現状ではまだまだ実験プログラムの域を出ず、レリーフ平面位置の設定も現状ではソースコードの編集に依っています。

この辺りを変更して最低限のプレーン位置設定機能や、その設定情報のファイル入出力機能を早急に作成したいと考えています。



・・・・・・・・・・【EasyRecaster明日からの実装機能開発について】・・・・・・・・・・


それよりも、

プログラムが動き始めてから気になりだしたことなのですが、

このプログラムでは画面に正対するピクセルの立体曲面化は現在正しく動作しています。

しかし横から見ていただくと分かる通り、レリーフ状になっているので背面の板とストレートにつながっています。

正面から見る限りは立体物として楽しめますが、横から見るとプログラムの立体化の限界をさらけ出してしまうのです。

出来れば横から見ても立体物として見られるようなレリーフ化が出来れば、立体出力物はより一層フィギュアに近い形状になります。

それが開発者としての願いでもあります。


ここ数日間横面ないし背面から見ても立体物になるような計算方法は無いか検討していましたが、

一昨日はたと思いつきました。


「裏面も同様に描画し、同様に立体化処理してから表面と統合してしまえばいいじゃないか!」


考えてみれば、このプログラムではメタセコイアモデルを描画する際に画面正面から見て裏側になるポリゴンは自動的に描かないようにする設定(=カリング)を行なっています。

このカリング設定はOpenGLにより柔軟に行えるようになっており、これとは逆に「裏面」のみを描画して表面は描画しないようにすることが出来ます。

しかしその場合においてもまだ問題は残ります。それはOpenGLが採用している描画計算アルゴリズムである「Zバッファ法」の処理方針です。


「画面の手前のポリゴンを残し、奥のポリゴンを消去する」


ところがOpenGLではこの処理方法を変更し、「奥の物を残して手前の物を消去する」描画を行うことが可能なのです。

(専門的な話ですが、glDepthFunc()関数の利用により実現出来ます。)


ということは、「裏面ポリゴンを、奥の物を残して手前の物を消去する」方法で描画すれば、背面モデルの表面形状を計算により生成することが可能です。


ここまでわかった以上、やらないわけには行きません。

ということで、明日以降この機能の実装に向けて挑戦を始めます。(汗)


今週中に出そうと思っていました試作物ですが、この機能の実装を確認次第改めて試作ぶつを出し直し、

立体出力サービスにかけてその結果を確認したいと思います。(^^;)



・・・・・・・・・・【昨今の3Dプリンターをめぐる論争に対するアレコレ】・・・・・・・・・・



最近は3Dプリンターについての様々な最新ニュースが飛び交うようになり、立体出力界隈も楽しそうな状況になって来ました。

中でも朗報なのは米国の老舗3Dプリンターメーカーのコンシューマー向け低価格3Dプリンターの販売が始まる等の情報が出てきたことです。

(※2013年4月25日現在、ソースを失念したため具体的にかけなくて申し訳ありません。ソースを発見次第再掲します。)

それに呼応するかのように米国内で展開している様々な3Dプリンターとその出力用形状データ共有サービスが日本でも紹介され、

日本においても同種のサービス開始が待たれる状況になって来ました。

現在開発中のEasyRecasterもそうした流れを支援する存在としてお役に立てるように頑張りたいと考えています。


しかし、こうした流れの中で「3Dプリンターは米国のような具合には普及しない」という論調が認められます。

3Dプリンターを利用するには3DCGモデリングスキルがなければならない、という主張も見受けられます。

こうした意見は、米国から始まった3Dプリンターブームとは真逆の意想ベクトルから発せられたものと思います。


何故こうした意見が出るのでしょうか?


それは日本国内における3Dプリンターの登場と過去の利用シーンが絡んできます。

昨年のMakersブームが発生する前から3Dプリンターという機械は存在していました。但しその頃は3Dプリンターとは呼ばずに

「RP機(Rapid Prototyping Machine)」と呼称していたのです。

その頃の3Dプリンターの役目は、「金型を作成するための試作モデルを評価するための立体出力装置」だったのです。


すなわち、3Dプリンターの立体出力物は、

それをそのまま何らかの製品として売るためではなく、

その出力品を利用して金型を作成し、低価格で同じ形の製品を量産するための試作品として利用するためのものだったのです。


しかし、金型を作るということはその時点で100万円オーダーの製作費がかかります。

昨年末以降注目されている3Dプリンターは、この金型をすっ飛ばして直接最終製品を制作することを目標に開発が進められているのです。

それは金型陣営にとっては市場縮小を意味します。すなわち死活問題です。

そのため、以前から金型市場向けに3Dプリンターを売ってきた人たちは、

3Dプリンターにより金型市場を潰されることを恐れて微妙なネガティブキャンペーンを張っているのです。

(「微妙な」と記述したのは、3DプリンターもRP機も同じ種類の機械であるため、それぞれに興味をもつ人間をDisることになればどちらからも批判されてしまうのを回避する狙いがあることを指しています。)


とは言うものの金型製作のために3Dプリンターを利用する人口よりは、個人的な立体物の入手や商品の生産のために3Dプリンターを利用する人口のほうが今後は増えることは目に見えています。

米国におけるWebでの3Dプリンターサービスはどれも後者の人口増を狙ってのものばかりですし、ソーシャル内での興味は常に後者の側にあります。

これらに背を向けて、3Dプリンターの生産性をことさら否定しようとするのは建設的ではないし、むしろ哀れな気がします。

個人的に金型の有用性については否定しませんが、量産して量販するといった20世紀後半の大量生産大量消費モデルを推し進めるには現在は情報が多様化しすぎているのです。

セオリー通りにTVCMを打って10万100万さばける製品を作る場合は量産コストとクォリティを考慮する必要があったのですが、

既にその産業は新興国にシフトしていってます。

(※生活必需品や、需要が決して無くならない製品については日本国内での量産を続ける必要があると思います。)

さらにWebの普及はスマフォによって加速し、商品をあらゆる場所で検索し調査し比較検討しできるだけ安く購入できるようになりました。

そのため小売は常に苦戦を強いられています。大型家電量販店ですら売上は下がっていますし、既にTVやオーディオといった主力商品も市場の縮小が続いています。

物が売れないのは消費者の意識が変わってきたためです。

その消費者のこだわりをすくい上げる機械として3Dプリンターは注目されつつあるのです。

そしてその可能性を信じる人達がネットやソーシャルツールを介して集まってきています。

こうして集まった人たちの頭脳と情報交換が、今後の3Dプリンターと、そこから生み出される新しいアイデアを加速することは目に見えています。

意想の集合体による生産性の加速は既にWeb上で何度も証明されています。

この流れを無視することは、ガラパゴスと揶揄された日本の携帯電話以上に日本人のクリエイティブ能力を後退させる要因になり得ると思うのです。


故に、歩みを続けましょう。(^^)




EasyRecasterによる出力サンプルと開発予定。

2013年04月19日 21時43分58秒 | プログラム開発


本日は実際に立体出力するためのデータその1を作成しました。

「このバニーさん誰?」と思われる方もいらっしゃると思いますが、一応私のオリジナルデザインキャラです。

対外向けに発表する用に向けて版権に引っかからない素材を考慮したため、オリジナルデザインの3DCGキャラクターデータを作成しました。

この子の名前はまだ決めてません。(汗)

バニーさんの格好をしているのは作者本人が卯年生まれなのと、

昨年某3DCGデータ公開サイトで行われた「ファンタジー娘祭り」に急遽エントリーするために作成したため簡単にバニーさん衣装を作成したのです。


・・・・・・・・・・

それはさておき、

EasyRecasterの開発・リリース予定をお伝えしておきます。

現状のインタフェースはあくまでデータ生成アルゴリズムの確認用のための最低限の機能しか搭載されておりません。

元々STLファイル(立体出力用3DCGデータファイル形式)が扱えるプログラムでしたが、

現在はメタセコイア形式3DCG形状データファイルの入出力機能を優先するため無効化されてしまっています。

このSTLファイルの入出力の復活に加え、

画面レイアウトも現在の1画面から2画面構成に変わります。

それと、今のところプログラムの初期値を書き換えて対応している

・レリーフ底面位置(Z座標値)

・レリーフの厚さ(Z方向値)

・レリーフの彫りの深さ(倍率値:0.1~10倍)

の3つのパラメータを設定するためのUIを装備する予定です。


但し本プログラムはあくまで実験目的での開発のため、

今後は開発言語や画面構成・搭載機能等を大きく変更し、

3DCG初心者のためにより使いやすいレイアウトを採用した別のプログラムを開発する予定にしております。

そちらの開発につきましては計画が固まり次第改めて発表させて頂きます。

取り急ぎですみませんが、プログラム開発の現状のご報告でした。

【3DCG立体出力】EasyRecasterテスト版【全自動データ変換】

2013年04月18日 19時10分09秒 | プログラム開発


一昨日ご報告しました3DCGデータの3DCG立体出力対応自動変換(フルカラー出力可能)プログラムですが、

名称を「EasyRecaster」(イージーリキャスター)と命名しました。

ということで本日、EasyRecasterが出力した最初の3DCG形状データが完全閉空間であることを

以下のMinimagicというチェックツールを用いて確認しました。

下の画像では色無しのモデルが表示されていますが、

こちらはSTLファイルという色がつかない立体出力対応ファイル形式です。



この段階で立体出力サービスに出しても問題なく出力されますし、

個人用の小型3Dプリンターを利用して立体出力する場合でもエラーが出ること無くそのまま立体出力にかけることが出来ます。


・・・・・・・・・・

ということで、明日からはこのプログラムを利用したデモ用の立体出力形状の作成に入ります。

実際にツールから一発出力したデータを立体出力にかけて、どんな実物に仕上がってくるかをお見せすることになります。

同時に、ニコニコ動画にそのレポート動画をアップロード致します。

その際、今回開発したプログラムを公開アップロードすることに致します。

現状ではまだ試作要素の強いプログラムのため初心者向けとは行きませんが、

MMDやGoogle等で公開されている3Dライブラリーの形状をレリーフ状にして立体出力にかけることが可能です。

実はレリーフの作成はモデリングツールを利用して行おうとすると色々厄介な問題が出てきます。

ましてや今回のように完全閉空間を考慮した立体出力対応3DCG形状データにしようとすると、

どうしても細かいポリゴン調整を余儀なくされ時間がかかってしまいます。

それをプログラムの力で一発処理しようというのが今回の開発目的でもあるのです。




しかも今回のプログラム開発技術はまだまだいろいろな応用の可能性を持っています。

今後はその可能性を広げる開発を進めて行きたいと考えております。

MMDアバンドールプロジェクトから生み出された新技術と、そのアプリケーション開発動向に

今後もご注目頂ますよう宜しくお願いします。(_ _ )