2018年5月活動報告

 BLAZBLUE_CROSS_TAG_BATTLEを過って購入した3年次Bヒロです。

 先日は『TNP5月の月末報告会』を開催しました。

__________________________________________________________________________

 制作者:いっちー(2年次)

 迷路などで使えそうなフィールドグラフィックを制作していただきました。右下には

マップ画面を表示しています。

 今後はさらに遠近感をだしたいとのこと。

__________________________________________________________________________

 制作者:YUTA(2年次)

 UFOキャッチャーゲームを制作してくれているようで、画面奥にはミラー、

右上には天井視点、左上は景品出口といったところでしょうか。

 見やすいグラフィックで完成が楽しみな作品です。

__________________________________________________________________________

制作者:Golden_River(副会長)

 『スタイリッシュ・シミュレーション・アクション・エアホッケーゲーム』

 現在制作途中だそうで、夏コミまでには完成させたいとのこと。

__________________________________________________________________________

制作者:Bヒロ(3年次)

 『未定』

 敵キャラを避けて、右下を目指すためだけのゲームを今回は作成しました。

 ゲームバランスなどの、調整後RPGアツマールに投降予定

__________________________________________________________________________

 発表者:こしょう(会長)

 UnityでLeap Motionを見せていただきました。

 カメラにより、手を認識して、手先から立方体などを出したりなど、興味深いものを紹介

していただきました。

__________________________________________________________________________

 その他にも、TNP子Vtuber企画(うおちー(2年次):TNP子のモデリング)、BGM制作、

イラスト制作などなどの発表もありとてもMARVELOUSでした。

 今月は初年次講義が始まったりとTNP新体制として動き出した月でした。

 6月には新入生歓迎会などイベントを開催予定です。

MMD4MecanimのMacでのエラーについて

 
 お疲れ様です。ガナリヤです!
 UnityでMMDモデルを使用したいと考えたのですが、なかなかうまく行かなかったため、忘れないうちにこちらに記しておこうと思います。

UnityでMMDモデルを読み込む方法

①Blenderで一度取り込み,.blendファイルを読み込む
 MMDのモデルデータは、pmx形式になっています。
 しかし、Unityで対応しているモデルデータ形式は
 ・fbxファイル(Unityではこれが普通。ただし、マテリアル、テクスチャが読み込まれないなどめんどくさい)
 ・blendファイル(Blender)
 が主にあります。以前Splatoonプロジェクトを行ったときはfbx形式を使用していました。
 今回は、BlenderでMMDモデルを取り込むため、fbx形式、blend形式のどちらでも良かったのですが、なぜかどちらもうまく行きませんでした。
 fbx形式では、マテリアルとテクスチャが取り込まれず
 blend形式では、マテリアルとテクスチャは取り込まれたものの、色の設定が行われておらず、表示位置から少しずれていました。
 Unity2017の最新版で、うまく対応してないのかもしれません。
 今回はこの方法でうまくいかないため、新たな方法②を使用しました。

②MMD4Mecanimを使用する
 MMD4MecanimはNoraさん(@Stereoarts)が開発した、Unity上でMMDモデルであるpmx形式を直接読み込み、fbx形式に出力できるというすごいツールです!
 
 なお、MMD4Mecanimの導入は他のサイトさんをご利用ください。(うまくかけないため)

 自分もMMD4Mecanimを導入したのですが
 Processボタンを押してもうまく行きませんでした。
 
 そこで、うまくいかない理由は以下のとおりであると考えました。
 「自分の開発環境がMacであり、MMD4MecanimはWindowsの機能を利用するため、うまくいかない」

 そこで、上の画像にもあるのですが、「Wine」というLinux/Macで動作するアプリを使用しました。これは、Mac上で、Windowsのソフト、機能を使用することができるというアプリです。
 このWineをインストールしてもうまく行きませんでした。(後に確認したところ、Wineはなくても、最新のMMD4MecanimはMacでも動作するようです。) 

 じゃあなんで行かないのじゃぁ・・・(のじゃロリ風)

 圧倒的壁に立ちはだかったため、開発者であるNoraさんに質問をさせていただきました。
 質問をさせていただいたところ、UnityのEditorログにエラーが載っているとのことでした。

 確認をしてみたところ
「 Reason: Incompatible library version: pmx2fbx_275 requires version 8.0.0 or later, but libiconv.2.dylib provides version 7.0.0
Processed pmx2fbx.」
 という表記があり、libiconv.2.dylibという動的ライブラリのバージョンが古いため作動していないということでした。

 libiconvってなんやねんって思い、検索してみたところ、要約すると、文字列の文字コードを変換するライブラリでした。
 ・・・・・なるほど、よくわからん。
 
 とりあえずlibiconv.2.dylibのバージョンが8になればいいやと思い、色々とサイトを調べ、継ぎ接ぎ継ぎ接ぎ実行した結果うまく行きました。
 方法としては
1.XCodeのコマンドラインツールが必要なため、インストール
2.macportsというパッケージ管理ツールをダウンロードしてインストール(homebrewに近いものです)
3.ターミナルに「port rev-upgrade」と入力し、libiconvをアップデート(うまくいかない場合は先頭に sudo とつけて、管理者権限で行ってください)
4.ターミナルに 「brew install libiconv」と入力し、libiconvをこれでもかとアップデート

 上の方法で、自分でもよくわかっていませんが、なんかうまくいきました。うまく行った結果は以下の画像です。

 
 かばんちゃんかわいいよハァハァ・・・

 よくよく考えたら明日テストでした。
 どうしましょう。以上、ガナリヤでした

Unity 2Dライトについて

お久しぶりです。またもやガナリヤです。
最近はバイト先でうまく教えられなくて辛い毎日です。
もっとうまく教えたいものですね・・・・

現在けもふれパズルのリファクタリングを行うためのクラス構造を考えており、することが特に今はないため、Unityを再び触っています。
去年はC#の基礎と、使い方もわかっていないのに、インターフェースとかTのtypenameとかをやってたためUnityがさっぱりわかってませんでした。
今、久しぶりに触ってみると多少わかるようになっており、時間が立つのは早いものだと感じました(もう三年生になってしまうのですね・・)

Unity2Dにおいて、画像を光らせる方法を模索したので自分用にここでまとめておこうと思います。

1.Post Effect
現在のUnityのバージョン2017では、画面に行うエフェクトを使うためには、Unity公式が配布しているunity post processing stackというアセットがあります。
これは、調べたところによると、Unityのエディタでフレームとして出力したあと、post Processing stack が、それを更に加工して出力しています。
つまり、出来上がったものをさらに、調味料とかを入れて完成させているわけですね・・・(わかってない)
使い方としては、
1.アセットのダウンロード
2.メインカメラにPost Processing Behaviourをアタッチ
3.プロジェクトのcreateからPost Processing Profileを作成
4.PostProcessingProfileをメインカメラのPostProcessingBehaviourにアタッチします。
これであとは、PostProcessingProfileをちょちょっと弄るだけで、いろいろな画面エフェクトが行えるというわけらしいのです。
今回は、Bloomを使用しますが、それはこのあとに記述していこうと思います。

2.Emission
Unityには
・シェーダー
・マテリアル
と言うものがあるらしいのです。
シェーダーは、Unity内のゲームオブジェクトのレンダリングの際に、どのように表現するかを記述するらしいのです。(表面をどれくらい光らせるか、模様はどうするかなど・・・)
マテリアルは、シェーダーやSpriteなどを含み、ゲームオブジェクトの属性としてアタッチする際につけるらしいです。
つまり、マテリアル=シェーダー+テクスチャ+色とか・・
の上記の式が成り立つはずです。

そして、EmissionはシェーダーであるStandardSharderの項目に含まれており
「その物体がどのくらいライトを反射し、他に影響をあたえるか」
を表しています。
Emissionが高いほど、自分の色を光らせて周囲の物体に影響をあたえることができるのです!(3D)

ん・・・・・?Diffuseシェーダーとは何が違うねん・・?

調べたところによると、
Emissionは、他にライトがなくてもある程度光る(自分の持つColor+Emissionのため)
Diffuseは、他にあるライトを反射して、初めて光る
という違いのようです。

このEmissionとDiffuseというシェーダーを使えば光らせられる!
・・・と思っていた時期が僕にもありました。
3Dではこの方法でうまく行ったのです・・・
しかし、2Dでは、ライトのレンダリングの関係なのか
EmissionでもDiffuseでも、オブジェクト自体のみが多少光り、他の物体に何も影響を与えます!
ああいけません!(ピングー)

そこで次の方法を考えました。

3.Point Lightを使う
 結局ライトを使えばよいのではという発送に至りました。
Unityではライトを簡単に使うことができます。
Create→Lightで自分の好きなライトを選択すればシーンに配置されます。
Lightの種類はたくさんありますが、だいたい使うのは2つです。
一つ目はDirectionalLight、これは太陽光などの、どの角度なのかはあまり関係なく、シーンに配置すれば、すべての場所が明るくなります。基本光りとして使えますね・・
二つ目は、PointLight、これは、懐中電灯などの、ある一定の範囲のみを明るくするときに使用することができます。

PointLightを使えば特定のものを明るくできる!
そう思っていたじk(ry

僕の作りたいゲームはスマホ向け・・・
しかも、PointLightを多分50個ほど生成することになります。
これは無理だぁ・・・

4.Emission+PostProcessingEffect
最終的にこの内容に至りました。
シェーダーの項目であるEmissionと、PostProcessingに含まれているBloomを使用します。

まず、Emissionを1以上に設定してオブジェクトを白く光らせます。(この時、エディタ上では、HDRと表示されます。HDRは、物体の表示するRGB(255,255,255)の明るさの範囲を超えているよ!、という意味で、HDRにすることで、普段は表現できない明るさを表現することができます。この表現できない明るさが、他の物体に影響を与えるということらしいです(3D))

Emissionを利用することで、オブジェクトが少し白く光りました。
そこにPostProcessingのBloomを使用します。
Bloomは、すでに描画されたフレーム内の白色に近い部分を抜き取り、白色の部分をぼやかして乗算することで、まるで光っているような表現を行うことができます。
Intensity(光の強さ)やtherouseなんとか(光らせる白色の閾値)を設定することでどのぐらい光らせるかを決められます。

Emissionでオブジェクトを少し白く光らせ、Bloomでそれをぼやかすことで、まるでオブジェクトが自分で発光しているかのような表現を行うことができそうです。
この方法で新しいスマホゲームを作ってみようと思います。

わかりづらい記事かつ、情報もあやふやですみません。Unity初心者のため、まだ仕組みがよくわかってません。
いずれ画像も追加していこうと思います。

つたない文章でしたがお許し下さい!
ガナリヤでした!