さて草のしなり具合をどうするか、ということで曲線について色々と調べてみました。
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を使ってプレビュー表示に使うとこんな感じ
青い3つのポイントをユーザーに設定してもって草のしなり具合を決めてもらう。
という風にしようかなと考えています。
カテゴリー: プログラミング
LightWave用、草生成プラグイン
草生成プラグインを作る為に~
CommandSequenceクラスを利用することにします
頭ではこんな感じで出来るだろう~とイメージがありますo(*≧□≦)oぐぁ
まだ纏っていないので時間がかかりそうです(*´・ω・)y━~
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を押すと…
↓な感じになります
アニメーションで説明
OpenGL
今日は無駄にImage保存機能を付けてみました~(・ω・)~
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━~
OpenGL
LightWaveプラグインバージョンアップ
FOR_EasilyLinesをVer1.1へ
追加機能は、最初と最後に選択した線分上に残りの選択ポイントを整列させるというものです。
この機能を付けるだけで6時間かかってしまいました、、
資料(数学の公式)を探すのが大変です・・・(-ω-`)
キーワードは、線分、三角形の内角の二等分線と比例、Point間の距離、内分点
これらを応用したものが今回の機能です、もっと他にいい方法があるかもしれませんです(‘ω’)ゞ
疲れた(_△_;)
OpenGL
今日はポリゴン表示、Zoomな機能を付けました
今後も機能が増えたり減ったり色々とやってみたいです。
OpenGL
OpenGL
OpenGLに興味が出てきたので参考になりそうなサイトを探して少しずつ覚えてますヾ(≧∇≦)〃
LightWaveのパネルにもOpenGLを表示できるコントールがあるので,何か作ってみたいな(*´・ω・)y━~
Verアップ
昨日の記事で言っていた機能を付けました
どうやってCtrlキーが押されている状態を取得しようかなーと思って、
調べてみるとWin32 APIの
GetKeyState関数
で取得できました。
今後も使うかもなので以下に書いておきます。
if(GetKeyState(VK_CONTROL) & 0x80000000) //もしCtrlが押されていたら~
if(GetKeyState(VK_SHIFT) & 0x80000000) //もしShiftが押されていたら~
if(GetKeyState(VK_MENU) & 0x80000000) //もしAltが押されていたら~