2019年12月27日金曜日

[Blender2.81]手軽にリアルな雪を生成できる無料アドオン「Real Snow」のご紹介


はい、こんにちは。
@CortanMathです。


今年もクリスマスが終わり、ますます気温の冷え込む真冬に突入しようとしています。

皆さんは、いかがお過ごしでしょうか。




僕は特にクリスマスに予定があったわけでもなく、家に引きこもり、Blenderとかで遊んでいました。



ということで今回は、こんな冬にピッタリなBlenderの無料アドオンをご紹介しようと思います。

その名は「Real Snow」というもので、少しパラメーター変更とボタン一つでとても簡単にリアルな雪が生成できます。
指定したオブジェクトに積もらせる感じで、生成できます。





YouTubeの方にも動画上げましたので良ければご覧ください。
(この記事を同じ内容ですが)



では早速やっていきましょう。



アドオン「Real Snow」のダウンロードと追加



まず、こちらのサイトから「Real Snow」本体をダウンロードしましょう。
zip形式でダウンロードできると思います。

https://3d-wolf.com/products/snow.html



そうしましたら、Blenderの方に追加していきます。




「Edit」>「Preferences...」を開きます。




「Add-ons」から、「Install...」をクリック。

そして、先ほどダウンロードしたzipファイルを選択してください。






こんな画面が出ていると思うので、「Mesh:Real Snow」にチェックを入れ、設定を保存してから閉じてください。




なんかエラーでた



インストールも終わったので早速使ってみようと思ったら、こんなエラーが出ました。



AttributeError: 'SubsurfModifier' object has no attribute 'quality'



'SubsurfModifier'モディファイヤに属性'quality'がありません。



エラーの意味が分かっても具体的な解決策がよくわからない...




で、なんとなくBlender2.8からBlender2.81にアップデートしてみたら見事解決しました。




物は試しですね。
Blender2.80では、Real Snowが使えないみたいです。



実際に使ってみる


ではあらためて、実際に使ってみましょう。


と言っても簡単。
雪を積もらせたいオブジェクトを選択して、プロパティパネルの「Real Snow」というタブから雪を設定してやるだけです。



雪が覆う率と、厚さを入力して、ボタンを押します。

パソコンによっては(また、指定したオブジェクトによっては)少し時間がかかると思います。




では、僕が実際に作ったものをご覧ください。



まずは、これ。
Planeを細分化し、スカルプトモードで凹凸を付けたものに雪を積もらせました。

メッシュが大きいので、少し重かったです。






次にBlenderお馴染みの猿を配置したものです。





そして、これはブログのトップにもあるやつですね。
白男君を2体、自由な感じに配置しました。






それで、最後にイノシシです。





面白いので、ぜひ使ってみてください。


これで以上になります。



ではさようなら。
またお会いしましょう。

もしよければ、LINEスタンプの方もよろしくお願いします。


https://line.me/S/sticker/7072968

無言で何かを伝えよう とする白男くん - LINE スタンプ | LINE STORE

白男くんが何もしゃべらずに、何か大事なことを伝えようとするスタンプです。


お そらくいつでも使えるLINEスタンプ集


2019年12月25日水曜日

Enchant.js製のスマホ向けアプリを横向き(縦)回転の表示に強制させる方法!また、画面を中央に表示する


はい、こんにちは。
@CortanMathです。


今回は、JavaScript製の軽量ゲームエンジン「Enchant.js」についての記事になります。

別にEnchant.jsを使用しない場合においても応用できると思います。


で、内容は、「JavaScriptでスマホ向けアプリを作成した際、画面の向きを固定する」「画面を中央に表示する」といったものになります。





Enchant.js製のスマホ向けゲームで、画面横向き(または縦向き)のみでプレイしてほしい場合などがあると思います。
ただ、標準のままだとスマホの傾きにより画面が回転し、ゲーム画面サイズが小さくなってしまったりしますよね。


ということで、「画面の向きを判断し、もし目的の向きでなかった場合、その向きに端末を回転させるよう促す」ということを今回やりたいと思います。




最初のころは、何があっても強制的に画面を横向き(縦向き)に表示したいと考えていました。

「画面の向きを判定」 ⇒ 「もし目的の向きでなかった場合、ゲーム画面を無理やり90度回転させ、調節する」

という予定でしたが、スプライトとかの回転はできても画面自体の回転は良くわからなかったのと、画面横向きでプレイさせたい際に、縦にもった状態で横 向き表示する必要はないので、ただ警告を出すだけにしました。






また、それに加えて、Enchant.jsのゲーム画面を中央に表示するようにしたいと思います。
これをしないとゲーム画面は常に左上につめられて表示されるため、縦横比の異なるスマホとかでは、左右の余白のバランスがおかしなことになってしまい ます。

スマホによって余白ができてしまうのはどうしようもないので、せめて、全体のバランスが良くなるようにしたいと思います。



では、やっていきましょう。


Enchant.jsでゲーム画面を横向き(縦向き)に



これを行うためにも、まず、スマホの向きが「今、縦なのか横なのか」を判断する必要がありま す。


書き方はいろいろあるのですが、今回はその中でもシンプルな書き方をします。


if (window.innerHeight > window.innerWidth) {
            //縦向きだった場合
        }


こんな感じです。

画面の幅と高さを出して、その長さの比較をするという簡単なやり方です。


で、この縦向きだった場合に、「端末を横向きにしてください。」みたいなメッセージを出せばよいわけです。


実際にメッセージ表示を実装するとこうなります。
gameオブジェクトがロードされたところに書きます。



var alert = new Scene();
alert.backgroundColor = 'black';

var message = new Label('端末を<br><br>横向きにして<br><br>持ってください。');
message.color = 'white';
message.font = '50px "Arial"';
message.textAlign = 'center';
message.x = (game.width - message._boundWidth) / 2;

alert.addChild(message);

if (window.innerHeight > window.innerWidth) {
    game.replaceScene(alert);
}

こんな感じです。


これで最初ゲームがロードされた際、もしスマホが縦向きだったら、横向きにしてくれという警告を出しています。
また、最初から横向きだった場合は、標準のrootSceneが読み込まれます。


rootSceneにゲーム本体を用意すればよいわけです。


それが嫌な人は、上記のコードのif分にelseを足し、そこにゲームのメインシーン(もしくはOPシーン)を読み込むように書けばいいと思います。




ただこのコードのままだと問題があります。


ロード時に端末が横向きだった場合は良いですが、縦向きだった場合、メッセージだけ表示してそれ以降なにも進みません。


端末を傾けて横にしたら~、という処理が必要なわけです。

その部分はこう書きます。
window.onload = function(){}; の外にでも書いてください。


  
  window.addEventListener("orientationchange", function () {
    location.reload();
});
  

こんな感じです。

端末を90度傾けたら、みたいなイベントのようです。(正確には違うかもしれない)
だから、横から縦にしても、縦から横にしても発生します。


で、そのイベント発生後、ウェブサイト自体をリロードしています。

そうすると先ほどのコードがまた読み込まれ、今度は、ゲームがスタートするという仕組みです。



リロードするというのはあまり賢い書き方ではないと思いますが、コードを簡潔にし、減らすために採用しました。


これで、画面の向きが解決しました。


画面を中央に表示する



今度はゲームの画面を中央に表示します。


  
  var game = new Core(640, 360);

var CenterMove = function (core) {
    var stage = document.getElementById('enchant-stage');
    stage.style.position = 'absolute';
    stage.style.top = (window.innerHeight - (core.height * core.scale)) / 2 + 'px';
    stage.style.left = (window.innerWidth - (core.width * core.scale)) / 2 + 'px';
    core._pageX = (window.innerWidth - (core.width * core.scale)) / 2;
    core._pageY = (window.innerHeight - (core.height * core.scale)) / 2;
};

CenterMove(game);

こんな感じです。


gameオブジェクトを渡し、それをちょうど画面真ん中に来るよう移動しています。



以上です。



ではさようなら。
またお会いしましょう。

もしよければ、LINEスタンプの方もよろしくお願いします。


https://line.me/S/sticker/7072968

無言で何かを伝えよう とする白男くん - LINE スタンプ | LINE STORE

白男くんが何もしゃべらずに、何か大事なことを伝えようとするスタンプです。


お そらくいつでも使えるLINEスタンプ集


2019年12月10日火曜日

Blender2.8への移行は簡単!?リアルタイムレンダラEeveeを使用するときのポイントなど

はい、こんにちは。
@CortanMathです。


Blender2.8が公開されてからだいぶ経ちましたね。

今では、Blender2.81とかが出ているのでしょうか。




おそらくほとんどのBlenderユーザーが、Blender2.79からBlender2.8もしくはそれより上に移行していることと思います。

ですが、今回は振り返りみたいな意味を込めて、また、まだ移行しきっていない方に向けて、Blender2.8への移行、Eeveeについて少しまと めてみようと思います。


Blender2.8への移行

まず、現在インストールされているBlenderをアンインストールします。
もしかしたら、旧バージョンと新バージョンを共存させることも可能かもしれませんが、僕は試していないのでわかりません。

もしインストーラー版ではなく、ポータブル版を使用していたなら、また圧縮してどこか違うとこ ろに保険として保存しておくとよいでしょう。

Blenderをアンインストールしても、設定は残ります。
(僕はポータブル版だったので残りましたが、インストール版は試していないので確かではありません。たぶん残ると思います。)




次に本体をこちらの公式サイトからダウンロードします。

https://www.blender.org/download/


Windows , Mac OS , Linuxに対応しており、インストーラー版とzip版(ポータブル版)があります。
好きな方を選んでください。

僕はzip版を選びます。
ポータブル版の方が好きなので。



そうしたらインストールしましょう。
ポータブル版は展開ですね。



それが終わったら起動しましょう。



ここの、「Load 2.79 Settings」というところをクリックすると、以前まで使用していた設定、アドオンなどがすべて引き継がれます。
(ただし、バージョンアップの関係で一部完全には移行できない部分があるようです。)



簡単でしょ。
Blender2.8への敷居が少し低くなったのではないでしょうか。


Eeveeを使用する



僕が以前、Eeveeで作った動画です。


SFチックな演出が簡単にできます。


EeveeというのはBlender2.8から搭載されたリアルタイムレンダラのことで、ほぼリアルタイムにレンダリングが可能。レンダリング処理も 超速いです。


Cyclesに比べると物理的リアリティは劣りますが、それでも、十分なくらい美しく速くレンダリングが可能です。

ただ、いくつかポイントがあって、これをしないとリアリティのないしょぼい結果になってしまう かもしれません。というのをご紹介します。


まず、次の二つはおそらく必須でしょう。


Ambient Occlusion

オブジェクトの距離が近いところ、光が遮られやすい場所が暗くなったりなどし、リアリティが増 します。


Screen Space Reflections

これにチェックを入れないと反射が起こりません。
必須です。



次に、必須ではないけど、面白い設定としてBloomをご紹介します。

これにチェックを入れることで、光が飽和し、グローやグレアのような効果がかかります。
Bloomの設定、および、光源(Emission)の強さを調節することで、好みの感じにできます。


上の動画とかも、Bloomを使って近未来感を出しています。


あとおまけとして、Volumetricをご紹介します。



これにチェックを入れることで、空間が霧に包まれたような感じになります。

炎とか煙のシミュレーションをする際にも、これにチェックを入れないと、煙が表示されません。



以上です。


ぜひBlender2.8で快適な3DCGライフを!


ではさようなら。
またお会いしましょう。

もしよければ、LINEスタンプの方もよろしくお願いします。


https://line.me/S/sticker/7072968

無言で何かを伝えよう とする白男くん - LINE スタンプ | LINE STORE

白男くんが何もしゃべらずに、何か大事なことを伝えようとするスタンプです。


お そらくいつでも使えるLINEスタンプ集


人気の記事