草生成プラグイン

さて草のしなり具合をどうするか、ということで曲線について色々と調べてみました。
Shadeなどで使われているベジェ曲線を使うのがいいかなぁと思い、ベジェ曲線の数式を調べて使ってみました
(調べている途中、今日までベジェ曲線をベジュ曲線と読み間違えていました・・・(-ω-`)
(2次元)4Pointからなるベジェ曲線の数式
0≦t≦1
Xt =(1-t)^3X[1] + 3(1-t)^2tX[2] + 3(1-t)t^2X[3] + t^3X[4]
Yt =(1-t)^3Y[1] + 3(1-t)^2tY[2] + 3(1-t)t^2Y[3] + t^3Y[4]
草生成プラグインでOpenGLを使ってプレビュー表示に使うとこんな感じ
Programming7
青い3つのポイントをユーザーに設定してもって草のしなり具合を決めてもらう。
という風にしようかなと考えています。

LightWavePluginヴァージョンアップ

FOR_OnePointをVer1.1にしました。

同じ場所に複製できるようにしました。
このプラグインを使って作成したPointの使用例
FOR_OnePointを起動して<1m,1m,1m><499>で複製ポイントを打つ(500ポイント作成されます)
もう一度起動して<-1m,-1m,-1m><499>で複製ポイントを打つ(500ポイント作成されます)
ジッター・ツールのガウス状<1m,1m,1m>でOKを押す
もう一度ジッター・ツールを起動して放射線状<1m><0m,0m,0m>でOKを押すと…
↓な感じになります
work17
アニメーションで説明
work16

OpenGL

今日は無駄にImage保存機能を付けてみました~(・ω・)~
Programming6
OpenGLの画像を保存するには
 void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels );
を使って描画されいる画面を読み込んで、保存形式にそって書き出してやればOKなのですぐぁΣ(゚Δ゚*)
これを使ってみるとLightWaveのメインウィンドウの方の画面を持ってきてしまいました。(_△_;)
ショウガナイので
 COLORREF GetPixel( HDC hdc, int nXPos, int nYPos );
を使って取得することにしました。
しかしこれを使うと処理に時間がかかってしまふ・・・(-ω-`)
他に何か良い方法を見つけたら変えることにしよう(*´・ω・)y━~

LightWaveプラグインバージョンアップ

FOR_EasilyLinesをVer1.1へ
 追加機能は、最初と最後に選択した線分上に残りの選択ポイントを整列させるというものです。

この機能を付けるだけで6時間かかってしまいました、、
資料(数学の公式)を探すのが大変です・・・(-ω-`)
キーワードは、線分、三角形の内角の二等分線と比例、Point間の距離、内分点
これらを応用したものが今回の機能です、もっと他にいい方法があるかもしれませんです(‘ω’)ゞ
疲れた(_△_;)

OpenGL

昨日から作り初めました。
Programming1.gif
今日はオブジェクトの回転、正射影、透視法射影、ポイント表示、ライン表示、バックカラー&オブジェクトカラー変更、
な機能をつけてみました。
Programming2.gif
オプションパネル
Programming3.gif
ポイント表示、ライン表示の切り替え。
昨日からOpenGLを触り始めましたがとても楽にプログラミングができて楽しいです~(・ω・)~

Verアップ

昨日の記事で言っていた機能を付けました

どうやってCtrlキーが押されている状態を取得しようかなーと思って、
調べてみるとWin32 APIの
 GetKeyState関数
で取得できました。
今後も使うかもなので以下に書いておきます。
if(GetKeyState(VK_CONTROL) & 0x80000000) //もしCtrlが押されていたら~
if(GetKeyState(VK_SHIFT) & 0x80000000) //もしShiftが押されていたら~
if(GetKeyState(VK_MENU) & 0x80000000) //もしAltが押されていたら~