☆LightWave3D☆ ~Free Diary~

悪戦苦闘の3D制作の日々と、悪戦苦闘の日常を書き記していく日記です。

   


2013/01/11 【LScript関数_その1】

16754bc4.jpeg
何か、「です。」「ます。」って付けて文を書くのがいけないのかな。
それ以前に、文章能力が低いのもあるんだろうな。
ちょっと思考を変えて普段しゃべる感じで文を書いていきます。
(厨二病臭くなりそうですが宜しくお願いしますw)


やっぱ無理だw
 

よーい、スタート。



前回の記事で書いたとおり、何かを作る時に適したExpressionを使えるように新しく関数を覚えるのが目標。
まずは様々な面で利用出来るLScript関数から触っていきます。
 

【abs(絶対値)】
ef2784dc.gif (緑:CTRL 桃:Ex 灰:目印)

入力値を常に正の値に返す。
 

例:入力値→出力値
+1 → +1 / -1 →+1

ぱっと考えて利用出来そうな動きはちょうちょの羽の動きとかかな?
エクスプレッションの値をマイナスにすれば常に負の値を返すようになります。
作成するキーも少なくて済みそうです。

 


【ceil(切り上げ)】
507e3fbd.gif (手前の灰:CTRL 桃:Ex 灰:目印)

移動の値が少数点以下の数値の場合、適用アイテムは整数(1m)刻みで移動します。
ちょっとでも動かすと桃色のアイテムはパッパッパと移動する感じ。
対応しているチャンネルは上のGIFを見ると分かりますね。
他のチャンネルにも使えるのかな?
これとよく似た関数で「floor」というものがありますが、それはまた次の記事で説明します。



 

【center(中心値)】
3f2fc8c7.gif (赤と緑:CTRL 黄:Ex)

LWのチュートリアルでも紹介されていますね。
足の間に腰が自動的に重心移動する関数という認識が強いけど、人体モーションの自由度が損なわれるからあまりそういった事に利用しないです。

様々なモーション付けやリグの仕掛けを作る時に活躍しています。
↓こういった補助ボーンとか。。


d39ea5c3.gif (水*2:CTRL 赤:Ex)






【clamp(制限値)】
c4c2d469.gif (水*2:CTRL 赤:Ex)

アイテムと同期しつつ入力した値(0°~90°)の範囲内に制限を付けています。
モーションオプションの制御と制限にある「最小/最大」と同じものと考えると分かり易いと思います。
僕が最も利用する関数で、主にチャンネルの切り換えなどに利用しています。




 


【deg(ラジアンから度数へ)】
c06e132f.gif

関数の意味を知らずに使ったら上のGIFのような結果に・・・。


後になって調べてみると、入力値をラジアンとして受け取り度数に変換する関数ということが分かりました。

ラジアンはRelativityを学ぶ時に勉強したので関数の意味を知った時にすぐに理解できましたね。
(一人納得。)


入力値が1.0→1rad(ラジアン)→約57.29578°(180°/π)→57.29578の数値が出力値になるので、Inputの入力値をラジアンとして変換されます。
Expressionで入力する値もラジアンの値を意識すると良いでしょう。



・・・と、勝手に一人で自己解決してしまうと「何だそりゃ?」ってなりますね。
この「dag」という関数の中で何がどのように計算されているのかを説明します。
 

・ラジアンとは?

円の半径と角度に出来る円弧の長さを角度(ラジアン)として表すもの。
半径1mのタイヤが一軸方向へ1m進むための回転角度です。
(1ラジアンは約57度。)

半径1mのタイヤの円周は2π(m)で角度は360度ですね。
(π=パイ)
この条件を弧度法に当てはめていくと
 

90°=π/2 rad 、180°=π rad 、 360°=2π rad


になります。
これで角度が180°の場合、
 

描かれる円弧の長さ=π rad(m)



角度=π rad (rad)

 

は等しいということが分かります。
つまり、角度と円弧の長さ(移動距離)を出してくれるので、角度と距離の関係を計算するのにうってつけな単位なんです。

 

円弧の長さ(m)=円周(π)=角度(rad) ←こーゆーこと。

 

さて、ここまでの説明でもちょっと分かり難いかもしれませんので例題をはさみます。

半径1mのタイヤが一方向に1.2m進んだとしましょう。
その時回転したタイヤの角度は何度なのか?
これを解いていきます。
 

まずは情報収集ですね。
「タイヤが一方向に1.2m進んだ」ということは円弧の長さは1.2mという事でそれに相当する角度が回転されます。

その角度をA(rad)とすると、
 

A=円弧÷円の半径(rad)

A=1.2÷1

A=1.2 (rad)
 

と・・・計算しなくても答えが出ているんですけどねw

角度は1.2ラジアン。
これを度数に変換すると、

 

57.29578(1ラジアン)×1.2(角度を倍数として)=68.754936°(度数)


解答は、半径1mの円が1.2m進んだ時の回転値は68.754936°になります。


このような働きを「dag」という関数が自動的に行ってくれているのです。


【実際にdegを利用した動き】
cd9e5703.gif (かなり式が省略されている。)

Master.Rotation.P : deg([Master.Position.Z])/0.5

上のgifは半径が500mmなので0.5で割ってますね。

タイヤやローラーの動きを作るのにとても便利な関数です。


 

とりあえず、今日はここまで。
次回もLScript関数による制御と制限を調べていきます。

 

拍手[0回]

COMMENT

NAME
TITLE
MAIL(非公開)
URL
EMOJI
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
COMMENT
PASS(コメント編集に必須です)
SECRET
管理人のみ閲覧できます

カレンダー

10 2019/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

プロフィール

HN:
d_suzukky
性別:
男性
自己紹介:
こんにちは、d_suzukkyです。

田舎暮らしでのほほんと3DCGの勉強をしています。

ブログ内検索

Booklog

最新コメント

最新トラックバック

バーコード

フリーエリア

Copyright ©  -- ☆LightWave3D☆ ~Free Diary~ --  All Rights Reserved
Design by CriCri / Photo by Geralt / powered by NINJA TOOLS /  /