3ds max to Worldtoolkit追記。
気をつけろ!3dsMaxから書き出したROTはそのままWorldtoolkitじゃ使えねぇや!
ex)3dsmaxからase形式で書き出したときのデータ
*CONTROL_ROT_SAMPLE 0 -0.000000 0.000000 1.000000 1.570796
前三つが回転軸。X,Y,Zの合成ベクトルで表している。それぞれ二乗して合計すると1になるよう正規化されている。
最後のがラジアン。この分だけ回転する。これを[a]としておく。
ex)WorldToolKitで使うデータ
Orie 0.000000 -0.707107 0.000000 0.707107
前三つが回転軸。だが3dsmaxのものとちがって sin(a/2)がかけられている。 X*sin(a/2)
一番最後は cos(a/2)。
畜生、道理でそのままつかえねーはずだ。
しかも3dsmax標準の座標は高さ軸が上に向かうZなのに対して、WTKは高さ軸が下に向かうYときやがる。
その辺を考慮してコンバータをつくらねーと駄目ですね。
それかもともとWTKの座標系にあわせて3dsmaxで作るか。それでもYとZの入れ替えは必要なんですよね。
あと、3dsmaxのラジアンは増加量。WTKのパスの方で必要なのは絶対量なので、直前までの値をもってきてごにょごにょしましょう。
にゃー。
2007年12月18日火曜日
あーあ、俺のドリルは回転しっぱなしだなぁ!!
2007年12月6日木曜日
あーあ、俺にファッションセンスとパッションセンスがあればなぁ!!
WTK覚書
3ds Maxで作った.3dsファイルをWorldToolKit(WTK)でloadする。
するとたまに3dsmaxで作ったはずの形とパーツがずれているときがある。
これの原因を探ったら基点の問題だった。
3dsMax上でミラーとかいろいろすると基点がモデルの真中にないときがあるので、基点を動かして調節することがある。しかし、WTKで読み込むときには最初の基点で表示するために、結果としてズレがでる。
これを回避するためには基点を動かして作業したあとに一度.objファイルに書き出して読み込めばいいんじゃないの。そうすればモデルの真中に基点が設定されたものができる。やったね。
べつにこんなことしなくても基点直せるよって人は教えてください。お願いします。
あ、これ3dsmaxの覚書なんじゃねぇの。
2007年11月30日金曜日
あーあ、俺の脳にパッチあたんねぇかなぁ!!
Worldtool Kit修練
選択肢のジオメトリをクリックしたら次の状態に移る奴を作りたかったのでだらだらと作る。
マウス更新関数をつくればいいみたい。
static void mouse_phase1(WTsensor *sensor)
{
/*********************************
オリジナルマウス挙動関数
クリックしたものがどのジオメトリかを取得する
********************************/
long buttons; /* ボタン情報 */
FLAG lclick; /* 左クリックフラグ */
WTmouse_rawdata *raw; /* マウスXY座標値 */
WTp3 p; /* WTsensor_setrecod関数設定用 */
WTq q; /* WTsensor_setrecod関数設定用 */
float speed; /* センサー感度値 */
WTwindow *w; /* ウインドウオブジェクトポインタ */
int x,y,width,height; /* ウインドウ配置情報 */
//////////////////////////////////////////
WTpoly *clickpoly; /* クリックされたポリゴン */
WTp3 clickp3; /* なんかとりあえずいらねーかも */
WTgeometry *clickgeometry; /* クリックされたジオメトリ */
char clickgeoname[256]; /* クリックされたジオメトリの名前 */
//////////////////////////////////////////
WTp3_init(clickp3); /* 初期化 */
//////////////////////////////////////////
WTmouse_rawupdate(sensor); /* マウス新規情報を取得 */
w = WTmouse_whichwindow(sensor); /* マウスウインドウを取得 */
if(!w){
WTp3_init(p); WTq_init(q);
WTsensor_setrecord(sensor,p,q);
return;
}
WTwindow_getposition(w,&x,&y,&width,&height); /* ウインドウ配置情報を取得 */
raw = (WTmouse_rawdata *)WTsensor_getrawdata(sensor); /* ウインドウ座標系のマウス情報を取得 */
speed = WTsensor_getsensitivity(sensor); /* あーいらないかも */
buttons = WTsensor_getmiscdata(sensor); /* マウスのボタン情報をゲット */
/* 押されたか */
lclick = buttons & WTMOUSE_LEFTBUTTON; /* 左クリックON/OFF */
if(lclick){ /* 左クリックされてんの? */
clickpoly = WTscreen_pickpoly(0,raw->pos,NULL,clickp3); /* どのポリゴンクリックしたの? */
WTmessage( "X:%f Y:%f\n",clickpos[X],clickpos[Y] ); /* クリック座標表示 */
if(clickpoly != NULL){ /* クリックした場所にポリゴンがあるならば */
clickgeometry = WTpoly_getgeometry(clickpoly); /* ポリゴンからジオメトリを取得 */
strcpy(clickgeoname,WTgeometry_getname(clickgeometry)); /* ジオメトリの名前を取得 */
WTmessage( "geoname[%s]\n",clickgeoname); /* ジオメトリの名前を表示 */
if(strcmp(clickgeoname,"botton1") == 0){ /* botton1さんですか? */
/* A発動 */
WTmessage( "A\n");
}else if(strcmp(clickgeoname,"botton2") == 0){ /* botton2さんですか? */
/* B発動 */
WTmessage( "B\n");
}else{
/* 特に何もないです */
}
}
}
return;
}
予め「botton1」「botton2」という名前を付けたジオメトリを配置してある。
このマウス更新関数でジオメトリをクリックしたらAとかBとか表示されるものが出来た。
当然てきとーに作ってあるので品質に保証は出来ないし、
よくわかんねーで書いてある処理もあるので困る。
追記:returnを書き忘れる俺は死ぬべき
2007年11月28日水曜日
あーあ、俺がてるてる坊主作ると雨降るしなぁ!!
卒業研究の中間発表を明日に控えた午前三時ごろ。
一人研究室で作業をする俺。
やったー、ミスプリントでてるてる坊主できたよー。
ごめんなさい。
これでも一応中間発表用のレジュメは完成しており、パワーポイントを作成するだけです。
まあ、明日なんだから遊んでる暇はないんですけど。
2007年11月15日木曜日
2007年10月28日日曜日
あーあ、俺に洗濯物を干す気がおきればなぁ!!
もぎゅぎゅとポリゴンモデル作成中。
事故判例に乗っていた場所と条件が似通った場所を近所で探したら、そこは交通死亡事故発生場所でした。
そして「交通死亡事故」と書かれた看板がぼこぼこになっていました。
車とか金属じゃなくて布で作ればいいのに。
2007年10月23日火曜日
あーあ、俺の谷崎が潤一郎しねぇかなぁ!!
思い起こせば春琴抄はラブストーリーでしたね!
なんだ、俺も恋物語を読んでどきどきする高校生活もあったんじゃないですか!!
さて、交通事故裁定例集が届いたので読破しないと。
これも研究のためです。
交通事故なんてなくなればいいのにね。
2007年10月9日火曜日
あーあ、俺だって雨にも負けず風にもまけない強靭な肉体があればなぁ!!
愚鈍。
これほどまでに己を的確に表現する言葉を知りません。
そんなこんなでゼミ内進捗状況発表会。
同学年は軒並み進んでおらず、二ヵ月後の発表をリアルに感じてきている様子。
私は……、周囲に比べてリード……はしていないな。トントンといったところか。
その場しのぎと辻褄合わせだけは他人に負けられないのでなんとかしてみましょう。
そして私自身のエンジンをそろそろかけましょう。キックスタート、マイハート。
2007年9月28日金曜日
2007年9月26日水曜日
あーあ、俺に深夜プラス1かなぁ!!
WorldToolKit攻防記
キーボード'G'の押下時にオブジェクトを前方に発進させることに成功せり。
これを再生ボタンの実装の足がかりとする。
てめー何時間もかけてこれかよ。
第一3DS形式でテクスチャがどっかにぶっとぶ問題が解決できてないんだぞ。
2007年9月18日火曜日
あーあ、俺の夢野が久作しねぇかなぁ!!
泊り込みで楽しくWorld ToolKit日和
インストールはされているようなのでVC++6.0にて利用してみることにする。
demoプログラムがコンパイルできないのでインクルードファイルとライブラリファイルのフォルダを指定。
インクルードファイルの関連付けのおかげでコンパイル通過。
ビルドができねーっつーんでライブラリファイルの指定。
demoプログラム動く。
今日はここまで。
ちゃんと纏める。
[ツール]->[オプション]を選択し、[ディレクトリ]タブを選択。[表示するディレクトリ]のBOXで[インクルードファイル]を選択。
一番下にWTKのincludeフォルダとMicrosoftplatformSDKのincludeフォルダの絶対パスを追加。
[表示するディレクトリ]のBOXで[ライブラリファイル]を選択。
一番下にWTKのlibフォルダとMicrosoftplatformSDKのlibフォルダの絶対パスを追加。
[プロジェクト]->[設定]を選択し、[リンク]タブを選択。[カテゴリ]のBOXで[インプット]を選択。
[オブジェクト/ライブラリモジュール]にいろいろ書いてあるので、一番後ろにWTK関係+その他必要なライブラリを追加する。
私は面倒なので全部追加。(WS2_32.lib winmm.lib wtk.lib ddraw.lib d3dxof.lib d3drm.lib d3dim.lib wtkui.lib dxguid.lib dsound.lib dsetup.lib dplayx.lib dinput.lib)
これでコンパイルとビルドが出来るようになった。
WTKっていうかVC++の使い方っすね。
2007年9月15日土曜日
あーあ、俺に旨いコーヒーを入れてくれる人いねぇかなぁ!!
きまぐれに星の王子さまTシャツをおろす。
帽子のどこが怖いっていうんだい。
研究は進まず。
おきらく忍者ハンゾー復刻版(1) 購入。
諸星大二郎の新刊も買わなくちゃいけないんだぞ俺は。
2007年9月11日火曜日
2007年8月16日木曜日
あーあ、俺の部屋にクーラーつかねぇかなぁ!!
文鳥死ぬっつの!
試しに研究室での作業に切り替えるべく大学へ。
その際、友人に賞味期限が明日のパパッとライス(3個)を押し付けておく。
机につっぷして睡眠中だったがどうということはあるまい。
本日はだらだらと先輩の作ったサンプルプログラムを見る。
本当はコンパイルして実行し、理解を深める算段だったが断念。
研究室が広すぎて冷房効かないというのが最大の誤算。
お前研究室に来た意味がないじゃないか。
よって今日の成果
・サンプルプログラムのデータ化
次の宿題
・来週までにWorldToolKitに対する造詣を深める。
卒業、出来んのかな。
2007年8月8日水曜日
あーあ、俺に冷却ファンついてねぇかなぁ!!
今後やること。
[より面倒なこと]
・乗用車がある一定の速度で平面に垂直に衝突した際の平均的な損傷の具合(ただし乗客を考慮しない)をどこかから仕入れること。
・シミュレータを被験者に使用してもらい、効果を測定すること。
・シミュレータを実装し、テストし、バグをとること。
・部屋の掃除をすること。
・洗濯をすること。
・虫歯を治療すること。
・散髪をすること。
[より簡単なこと]
以上。