読者です 読者をやめる 読者になる 読者になる

「小さな探しモノ」「小さなゆかりさんでSPiCa」

静画 動画

小さな探し物


以前、投稿した静画の別バージョンのようなもの。\ワンモアー/
あの時は「相対的にデカい」で、
今回は「絶対的にデカい」になってます。
どっちみちデカい。

ゆかマキのサイズ差と、ゆかIAのサイズ差はちょうど同じ。
肩に乗ったマキマキの小言を軽く流すゆかりさんが、
IAさんに向かって同じ小言を呟く……とか、ありえそうですね。


ポーズ付けや画像出力が一通り終わった時、
実はまだ肩にマキさんは乗ってませんでした。

「放課後に黒板にラクガキ」くらいのノリで、
1/64マキさんを肩に乗せたら良い感じに盛り上がってしまって、
しぶしぶノリノリで画像を出力しなおしてます。


ちなみに、64倍IAさんと1/64マキさんのサイズ差は4096倍。
IAさんの体感ではマキさんが約0.4mmに、
マキさんの体感ではIAさんが約6.55kmに見えるはず。

0.4mmに近いものと言えば、シャーペンの芯の"直径"
6.55kmと言えば富士山(約3.77km)を余裕で超えます。
(ちなみにエベレストは約8.84km)
……こわいわー、多段サイズこわいわー。



小さなゆかりさんでSPiCa

似たような感じのを以前、ニコニコに上げましたが、
少し違う感じでもう一回カメラモーションその他付け直してみました。
歌詞の字幕も付いて、見やすさがアップ!(当社比)

動画ではパッと見、分かりませんが
時計の中央からズレた位置にある歯車の上で踊ってます。
あと私の趣味で、1/4096 → 1/65536にまで縮みます。

当時書いた記事だと「中央以外の歯車は位置合わせが」とか
「これ以上縮めると影とか色々限界が」とか書いていたはずなのに、
不思議なことに、できてますね。なんでだろう。


ありがたい事に、この超精巧な時計モデル、
各歯車の中央に回転用のボーンが入っています。
このおかげで、MMMのボーン位置合わせを使えば
好きな歯車の位置にダミーボーンを合わせる事ができます。
(あとはダミーボーンで時計を回すなり人を回すなりする感じで)

セルフシャドウはその仕様上、
広い範囲に細かな影を落とすには高いマシンパワーが求められます。
逆に言えば「狭く細かく」か「広く荒く」なら負荷は少ないわけです。

そんなわけで、今回はスッパリと割り切って、
「人の影重視」「時計の影重視」と
シーンごとに影周りのパラメーターをいじってみました。

最初はもう時計の影を全部あきらめて、
ゆかりさんの影さえあればいいかとも思ったんですが、
縮小にしろ巨大化にしろ、影がないとイマイチ実感が湧かないので
メモリ不足に怯えながら頑張ってみました。
……やっぱ影があると映えますね。



いやぁしかし、精巧で良い時計だ……。

広告を非表示にする

Scaleエフェクトで更に大きく/小さくできるようにしてみよう

メモ&Tips 配布物あり 雑記

以前投稿した記事で、Scaleエフェクトを改造して
複数のモデルの大きさを個別に変えられるようにしました。

今回はちょっと踏み込んで、
大きさの指定方法を変えてみようと思いました。
というわけで、勢い任せにメモっときます。

※命令文についての説明などはしません。
 できるほどの知識もないです。すまぬ。
※なんかこう、自己責任でお願いします。すまぬ。
MMDのエフェクトは基本C#らしいです。風の噂。


……もし私が改変したモノでよければ、ここからどーぞ。
ux.getuploader.com


さて、何はともあれ、Scale.fxをメモ帳に投げ込みましょう。
難しいコトバの意味は各々調べてもらうとして、
今回も前回と同じ場所を見ます。

// PMDパラメータ
float3 Origin : CONTROLOBJECT < string name = "ScaleControl.pmd"; string item = "スケール原点"; >;
float3 ScaleXYZ : CONTROLOBJECT < string name = "ScaleControl.pmd"; string item = "スケール変更"; >;
float Expansion : CONTROLOBJECT < string name = "ScaleControl.pmd"; string item = "拡大"; >;
float Reduction : CONTROLOBJECT < string name = "ScaleControl.pmd"; string item = "縮小"; >;
static float3 Scale = float3( clamp( pow(10.0f, 0.1f*ScaleXYZ.x), 0.01f, 100.0f ),
                              clamp( pow(10.0f, 0.1f*ScaleXYZ.y), 0.01f, 100.0f ),
                              clamp( pow(10.0f, -0.1f*ScaleXYZ.z), 0.01f, 100.0f ) );
static float ScaleAll = (1.0f + 9.0f*Expansion)*(1.0f - 0.9f*Reduction);

……4つ頭の片隅に置いといてください。
命令文の最後に ; があること、
命令じゃない行の最初は // にする必要があること、
かけ算は * で、割り算は / で書くこと、
数字はとりあえず 1.0f のように書くこと。



「static float3 Scale = ~」のとこを見ると、
何やら「ScaleXYZ.x」とそれっぽいことが書いてありますね。

「ScaleXYZ」を頼りに周りを見ると、
"ScaleControl.pmd"の"スケール変更"ボーンとご関係を持っているようです。
後ろに.xなんて付く辺り、座標っぽい匂いがしますね。というか座標です。

……しかし、周りにはclampだのpowだの謎の呪文が書いてあります。


 clamp( pow(10.0f, 0.1f*ScaleXYZ.x), 0.01f, 100.0f )
 clamp(数値, 下限, 上限)

clamp」は数値を一定範囲内に制限する為に使う命令です。
直後にpowがいて分かりにくいですが、0.01 ~ 100の間に制限されています。
無尽蔵に大きくしてしまうと大変ですから、これは必要ですね。
(本音:無尽蔵に縮めたい)


 pow(10.0f, 0.1f*ScaleXYZ.x)
 pow(数値A, 数値B)

「pow」は敵をひっくり返す便利なブロックです(うそうそ)
これは"A"の"B"乗、になります。
……直感的かもしれないけど、計算しづらいです。うーむ。


static float3 Scale = float3( clamp( pow(10.0f, 0.1f*ScaleXYZ.x), 0.01f, 100.0f ),
                              clamp( pow(10.0f, 0.1f*ScaleXYZ.y), 0.01f, 100.0f ),
                              clamp( pow(10.0f, -0.1f*ScaleXYZ.z), 0.01f, 100.0f ) );

つまり、この部分では、
「掛け算*1 → 累乗*2 → 一定範囲内に制限*3」が行われています。

私は多少使いにくくても、
「XX倍にしたい時はボーンをXX動かす」みたいにしたい。
というわけでやってきました今回の本題。


static float3 Scale = float3( clamp( ScaleXYZ.x, 0.001f, 1000.0f ),
                              clamp( ScaleXYZ.y, 0.001f, 1000.0f ),
                              clamp( ScaleXYZ.z, 0.001f, 1000.0f ) );

……と言っても、こんな風に
powを無くして制限範囲を変えるだけで十分イケます。
制限範囲はひとまず 0.001 ~ 1000 にして、
1/1000から1000倍まで変えられるようになりました。

もし制限範囲を変えたければまた書き換えればいいし、
X,Y,Zそれぞれ動かすのがダルい人は
3つ全部「ScaleXYZ.x」とかにしちゃえばいいわけです。

私のやりたいことができました。やー、良かった。
これで解決ですね。めでたしめでたし。



……。



…………。



あともうひとつ、おまけ。
Scaleエフェクトは表情(モーフ)で大きさを変えることもできましたね。

float Expansion : CONTROLOBJECT < string name = "ScaleControl.pmd"; string item = "拡大"; >;
float Reduction : CONTROLOBJECT < string name = "ScaleControl.pmd"; string item = "縮小"; >;
static float ScaleAll = (1.0f + 9.0f*Expansion)*(1.0f - 0.9f*Reduction);

前半2行では、
"ScaleControl.pmd"の"拡大"モーフの数値(0~1)を「Expansion」にメモって、
同様に"縮小"モーフの数値を「Reduction」にメモしています。

後ろ1行は、メモした2つの数値をかけたり足したりして、
計算結果を「ScaleAll」にメモしています。

つまりこのへんを書き換えると、3つ以上の表情で大きさを指定したり、
もっと大きくしたり、もっと小さくしたりできるようになります。
興味があればいじってみるのもアリ……かもしれません。

*1:0.1×ボーン位置

*2:10の「0.1×ボーン位置」乗

*3:0.01から100の間にする

広告を非表示にする

ちょっとした小物2つ

雑記 配布物あり



ポケモン サン・ムーン 島スキャンお手軽セット

f:id:Tappi:20170115225519p:plain

サン・ムーンでは、QRコードを10枚読み込むと「島スキャン」ができます。
アローラにヒトツキは生息していませんが、
島スキャンを使えば探し出して捕まえることができちゃうのです。

というわけで、アローラ図鑑から8匹ほどチョイスして、
QRコードを目コピでポチポチと打ち込みました。
これ姿が違うとQRコードも別なんですね。

……10枚分ポチポチと打ち終わった後に
「実はQRコードなら何でもいい」と知ったのは秘密ですよ。ええ。

ダウンロードはこちらから。


RPGツクールVX Ace 簡易エネミー拡大縮小スクリプト

f:id:Tappi:20170115225546p:plain

戦闘中の敵キャラクターを小さく/大きくするスクリプトです。
某ミニマムの魔法みたいなことをしてみたい人向け。

状態異常で大きさを変えたいが為に作ったスクリプトなので、
このまま導入した場合、「防御効果率」がそのまま表示サイズになります。

別のパラメーターで大きさを指定したい場合は、
[Game_BattlerBase]クラス内に書かれている
[各種能力値の略称によるアクセスメソッド]を見ていじってね。
攻撃力とかで指定する場合は (atk / 100) みたいに書くと良い感じ。

Ruby詳しくない人が作ったシロモノなので、
サポートは期待しないでくださひ。

ダウンロードはこちらから。

広告を非表示にする

小さなミルティユとフランボワーズで『マトリョシカ』

動画

マトリョシカマトリョーシカな動画。

>>ニコニコで見る >>YouTubeで見る

実は八月の初め頃に一回出力して、エンコードもしたんですが、
なんやかんやボンヤリしてたらいつの間にか十月になってました。

八月に出力したものからエフェクトを付けたり、
カメラモーションをあれこれ悩んだり、
16:9の方が迫力でるよ!と心の悪魔(?)が囁いたり、
途中でもっと縮めたいと心の天使(?)が囁いたりしつつ、
ようやく投稿されたのが上記の動画です。

あれよこれよとドンチャン勢いで進む動画なので、
深く考えず直感で楽しんでほしいな、と思ってます。
が、色々書きたい人なので、いつものようにアレコレ書きます。


合計で8人いて、部屋は4部屋あります。
これをいつもの「モデル関連付け」で数珠繋ぎにしてます。

今までは1人しか踊っていなかったので、
背景の大きさをグリングリンすれば良かったんですが……。
今回のコレだと、必ず誰か小さい/大きい人が出てきます。

大きさが変わると物理演算の挙動もガラリと変わるので、
作業中はずーっと物理演算をOFFのまま
最後に別プロジェクトで1/1のまま物理演算焼きこみをして、
それを保存し、8人全員に渡してます。

作業中はスカートが動いてなかったのもあって
八月に出力した時点でかなーり満足してた、んですが……。

その時は部屋の壁が全部同じ模様で
「今どれくらいのを写してるの?」となってしまったり……、
ダンスモーションがループ再生で繋がるようになっているのに
カメラの動きがループ再生で繋がらなかったり……、
一ヶ月も経たない内に気になる部分がポンポコしてきて
思い切ってフンガーッ!と頑張ったら、できてしまったわけです。



……ちなみに、動画の最初に見えてる部屋を1/8とすると、
動画の最後で映っている部屋は1/4096ほどになります。ちいさい!

広告を非表示にする