ヾ(*☉౪⊙*)。
2016年7月28日 星期四
[Uinty] 求點到平面的投影點
float distance = Vector3.Dot(planeNormal, (point - planePoint));
distance *= -1;
Vector3 vectorNormalized = Vector3.Normalize(planeNormal);
Vector3 translationVector = vectorNormalized *= distance;
Vector3 project = point + translationVector;
2011年8月9日 星期二
[Maya] 輸出一連串Obj檔
1. 首先先到這裡下載Maya的轉檔外掛
2. 下載來後解壓縮,將 objsExporter_v2.pyc 放到C:/Users/username/Documents/maya/2011/scripts
3. 打開 Maya
4. 打開 Window→ General Editors→ Script Editor
5. 在Python這個分頁,打上
import objsExporter_v2
objsExporter_v2.objsExporter()
6. 之後會出現這個視窗
- Frame Range:要輸出的範圍
- Current:只輸出現在這個frame的物件
- Time Slider:輸出全部時間軸
- Star/End:可指定頭和尾
- Additional Options:其他設定
- 我用到的只有Export as one mesh,打勾之後要輸入檔案名
- Save To...:指定檔案路徑,注意的是這個外掛好像不支援中文,所以路徑只能有英文 (我就是卡在這裡)
- Export:按下之後就開始輸出
- 最後別忘了要選擇要輸出的物件 (被選到會變成漂亮的粉紅色唷❤)
2011年8月8日 星期一
[Maya] 使用Maya Scrip
◎ Maya Scrip 介紹
所謂的Scrip就有點像寫程式,就是用文字編輯的方式,讓Maya來幫你執行一些他本來沒有的功能,像我們等一下要做的:把Maya裡的骨架及其動作,輸出成.asf和.amc檔。這個功能Maya本來沒有,但可以藉由寫Scrip來達成。
◎打開Maya Scrip編輯介面
Windows→General Editors→Scrip Editor
打開之後長這樣↓
◎Ctrl + Enter = 執行
◎語法介紹
- 所有的變數前面都要有$字號,沒有$代表Maya裡面的就有的
- -query:取值 (如果沒有加的話就是設定值)
- ``:值要用``包起來
vector $rootPos = ~joint –query –position Spine~;
把Spine這個骨頭的position存到$rootPos這個變數裡
[Maya] 骨架產生動作
1. 選到要設keyframe的那格
2. 把骨頭調到你要的角度
3. 把全部骨頭選起來
- 可以開 Window → Hypergraph: Hierachy方便選取,要黃黃的才代表有選起來。
4. 按S把這一個存下來
◎IK工具
所謂的IK呢,就是可以指定位置,電腦就會自動換算成關節的角度。所以Maya提供了IK工具,讓我們可以直接指定位置,省去了手動調整角度之苦。
1. Skeleton → IK handle tool →旁邊的小方框 (會開出細節設定視窗)
2. 在開出來的視窗設定 IK Handle Settings → Current solver → ikRPsolver
3. 然後就可以點了(滑鼠會變十字型),這個時候你要做的事,就是設定IK的頭和尾,所以總共要點兩下,兩個骨頭。注意:第一下點小孩,第二下點ROOT。這樣應該就設定好了
設定好的話,在他的小孩的骨頭上,會有橘色細細的線,可以點那個線來調整小孩骨頭的位置
以章魚的右下腳為例:
4. 成果
[Maya] 建骨架
- 切換成Animation模式 (在畫面右上角)
- ※注意※如果是要輸出asf+amc檔的話,請先做以下設定:Skeleton → Joint Tool → 旁邊的小方框。開啟後將Orientation設為zyx,Second axis world orientation設為+y
- Skeleton→ Joint Tool,切換成建骨架模式
- 開始建骨架,建完了就按Enter。 ※注意※如果建骨架是用來要輸出asf檔的話,在編修骨架時,就只能用平移的功能,不然轉出來會不正確,切記切記!
- 幫Joint取名字 (在畫面的右上方,藍藍一條的地方)
- ※注意※如果要輸出成asf+amc檔的話,請做以下設定:整個畫面的右邊視窗→ Object →你選到的joint的名字 →旁邊的小框框。會出現新的對話框,調整參數為:Transform Attributes → Rotate Order →zyx (可以使用script一次改會好很多喔!)
- 如果骨頭的結構很複雜的話,可以開啟 Hypergraph: Hierarchy介面來檢視,點選 Window→ Hypergraph: Hierarchy就可以呼叫出介面
◎關節的連接
先選取要接到其他關節上的關節
壓住Shift,再選要接過去的哪個關節
接下來有兩種方式可以把骨頭接起來,一種是整串骨頭平移過去,一種事長出一個新骨頭接過去
平移法
選 Skeleton→Connect Joint
長新骨頭
按 P
◎調整骨架顯示大小
可到 Display→ Animation→ Joint Size 調整
注意這只是調整顯示上的大小,並不會影響實際結構
◎Group創建方式
- 先選到root joint
- Edit → Group
2011年8月4日 星期四
[C++] 存檔相關好用程式碼
◎string reference◎
http://www.cplusplus.com/reference/string/string/
◎int 轉 string◎
char frame[4] = {0};
sprintf( frame, "%04d", f );
◎把讀進來的檔案裡面,各種奇怪的斜線都拿掉,且把後面的附檔名也拿掉,只留下檔名◎
string SplitFilename (const string& str)
{
size_t found;
found=str.find_last_of("/\\"); //斜線拿掉
string name = str.substr(found+1);
found = name.find("."); //附檔名拿掉
name = name.substr(0, found);
return name;
}
所以輸入 c:\windows\winhelp.exe 將得到 winhelp
此方法參考 http://www.cplusplus.com/reference/string/string/find_last_of/
◎新增資料夾◎
偷懶使用system call
system ("md folder"); //folder = 資料夾名稱
※如果system call裡面的指令,想要用string型態的話,必須使用str.c_str(),例如 system(str.c_str());