2015年8月25日 星期二

3dMax學習之路-Day3

  今天上課的重點是sweep,主要就是讓造型跟著一個路徑做立體成型,這是滿重要的功能,很多設計相關的軟體都有類似的東西,不過,今天也是同學程度開始明顥有落差的一天,所以老師把速度放慢,然後整個下午都在拿一個櫃子的例子在複習前兩天講的東西。

-----------------------------------------以下是Day3的筆記--------------------------------------------
sweep
1.產生一條路徑
2.Modifier List -> sweep
3.[Use Built - In selection] (內建)
 [Use Custom Section ](自行繪製)
 =>點[pick]or[]
4.調整大小
內建 => 調整[Parameters]
自行繪製=>調整圖形大小(不能用比例)
5.[Sweep Parameters]
I.Mirror xy/yz plan :造型,方向
II.x,y,angle:微調
III.九宮格圖示:對齊位置


造型及路徑繪製範例
Mirror 鏡射:產生對稱物件
1.產生圖形
2.點[工具列]->Mirror
3.選取鏡射方向的軸
4.選取[copy]or[Instance]
5.點[OK]
6.自行移動位置
Mirror 中有[offcet]可調整位置
櫃腳的部份採用lathe轉90度的方式來產生造型,再鏡射到四個角

基準軸
1.選取物件
2.到[ ]面板
->點[Affect privot only]
3.調整軸位置
4.再點一次[Affect privot only]
[Reset Privot]重置軸位置

連接物件
1.點[工具列]->select and Link
2.在[A物件]上按著左鍵
->到[B物件]上,才放開
A 連接 B

1.利用連結物件的方式把門板,玻璃及門把連結起來
2.利用改變軸心的方式讓櫃門可以打開

----------------------------------------------------課間練習------------------------------------------------
  因為今天的練習時間很多,所以我針對抽屜的畫法做了一下研究,原本老師的做法是在TOP畫出框體後,複製相同框體再刪去內圈後壓成底板,最後單獨在Front畫面板做結合,我則是在思考有沒有可能讓步驟再更精簡一點,原本是想用sketchup的概念,在平面圖上把線段切割好後拉出形體,但是發現在MAX 做這件事有點麻煩,最後得到的結論是在做完底板後,再複製一次框體,然後同樣是刪去內圈,但是改從另一面來壓扁立面體變成面板,這樣就能確保三個部件都在同一個基準的位置上發展,也不用再去對齊得要死。


-----------------------------------------------課後練習-------------------------------------------------------

  回家後複習了一下上課的東西,打算開始來每天找一樣房間裏的東西來練習,今天先找的是一個IKEA買來的四格櫃做練習,雖然可以利用矩形的方式再加上個十字就簡單解決,但我比較想要呈現的是組裝傢俱的完格各部件的樣子,一塊一塊拉出來再複製去排列也是個方式,但那是第一天的課程內容;所以我採用的做法是先拉出一個口字型的框體後,利用原地複製的方式,把上下左右四塊板子做出來,因為有第一個口字型的框體當基底,所以在改變複製出來的框體大小時,對齊就變得簡單多了。







3Ds Max學習之路-Day2

  原以為找到一份不錯的工作可以重回職場好好拚一下,沒想到只有短短四個月就面臨再次被資遣的命運,原本想報JAVA程式班報不到,因緣際會報到空間設計規劃班,然後剛好又有算命的說我適合找水屬性的工作,設計業算是水屬性的,所以就硬著頭皮上了,相較起程式設計,我對工業設計類軟體的經驗幾乎沒有,但對於軟體操作倒是不擔心,畢竟大部份的軟體操作,都有一些共用的法則可以延用;接下來,希望自己能每天都把上課的內容記下來,並且做成一份blog筆記。

Day1-Day2

  開課第一天的上半天都是在做一些行政作業及課務宣導,所以到了下午才開始上課,老師先談了一些空間設計學習上的概念,同時也給大家打強心針,希望大家不要怕,只要照著步驟學,400小時後,大家都是高手之類的;我倒覺得我幾年前自己花了七天時間把sketchup搞熟到做出自己房間的3D模型這件事比較可以說嘴一下,不過對於可以學習新軟體這件事,我倒是很開心並期待的。

  因為聯成電腦教室的電腦每次重開機都會重設一次,所以我放棄在上面裝自己的常用軟體,取而代之的是先用純文字的內建軟體做筆記,再加上小畫家做截圖,回家再整理,不過之後考慮改用IPad來做筆記會更快一些。

----------------------------------------------以下是Day1筆記-----------------------------------------------
3Ds Max 操作
一介面
下拉式功能表
工具列
面板
繪圖區
時間軸
二基本操作
1.滾輪
a.往前/後 ->拉近/拉遠
b.按著移動->平移圖面
c.[ALT]+平移圖面->翻轉視圖

2.create 面板->建立圖形
modify面板->修改圖形

3.繪製完成 -> 點[工具列] ->[select object]
4.點[右下角] ->視埠一個/三個縮放
5.刪除物件
a.點[]選取物件
b.按[delete]鍵
6.復原
a.點[<-]
b.ctrl + z

7.調整物件
a.十字方向->移動
b.旋轉
c.比例
功能按鈕圖示上按右鍵->調整數值
8.選取物件
    點[工具列]->碰到就算選取
              選到全部才算
9.複製物件
    shift+移動
    選取物件後 ctrl + v(原地)
[copy]:複製為獨立物件
[instance]:複製物件相互關聯

10.繪圖區
[+][Top][Wireframe]
       視圖   視覺型式

視覺型式(右鍵)
描影:shaded + Edge Faces
線架構: wireframe

作業:簡單的桌子含抽遞門板


----------------------------------------------以下是Day2筆記-----------------------------------------------

編輯2D
modifier List -> Edit spline
=>  vertex : 點
segment : 線段
spline : 連續線

範例(TV櫃)
a.到[front]視圖
 產生[Rectangl]
 =>尺寸:自訂(210x50)

b.到[Modify]面板
 ->Modifier List -> Edit spline

c.產生厚度:
I.進入[spline]模式
II.選單[連續線](點左鍵->變紅)
III.找[Outline]->輸入數值(ex.2)

d.繪製線段
I.到[segment]模式
II.選取線段
III.配合sgift +(移動)(複製線段)

e.修剪 / 延伸物件
I.到[spline]模式
II.點[Trim](修剪) / [Extend]延伸
III.點[圖形]
IIII.到[vertex]模式
->選取全部的點 -> 點[Weld](焊接)

f.回到[Edit spline]指令

g.長成3D
I.Modifier List -> Extrude(擠出)
II.Amount (數值)


門範例
1.到front
->產生[Rectangle](210x50)
2.到[Modifier List] -> Edit spline
3.到[spline]模式 ->Outline :(5~10)
4.到[segment]模式 ->調整大小與位置
5.回到[Edit spline]
6.Modifier List -> extende -> Amount :5~6
7.Ctrl+v -> copy(原地貼上)
8.到原本的[Edit spline] -> spline 模式 -> 刪除外部線段
9.回到[extrude]->amount (0.5~1)
10. 調整前後位置


    結合:Attach
1.產生多個物件(2D)
2.任選一個2D物件
 ->Modifier List -> Edit spline

3.點[Attach] -> 選取其他物件
 點[Attach Mult]
->可以透過名稱選取物件

[點]模式:
I.Edit spline -> vertex模式
II.選取[點] -> 右鍵
=>Bezier:曲線
 Bezier Corner:單邊曲線
 Corner:尖角
 Smooth:平滑

點[Refine]在物件上點左鍵 =>可以加入點


長成3D:
1.Extrude:往垂直方向長成3D
2.Bevel:有斜角(outline)的Extrude
3.Lathe:繞著軸輚成3D
4.Sweep:沿著路徑長成3D
5.Bevel Profile:類似[Sweep],圍繞部份為實心

Bevel:
1.產生2D圖形
2.Modifier List -> Bevel
3.Level 1 :
Height: 高度
Outline:斜角
最多到[Level 3]

                Lathe:
1.產生圖形一半
2.Modifier List -> Lathe
3.I.Degress: 角度(0~360)
 II.segment:邊數(3以上)
 III.Align:[軸]對齊
 =>[Min]:左
   [Center]:中
[Max]:右
展開"Lathe"點"Axis"可自行調整軸位置



     本日作業,配合上午門板的練習,做一個門把出來

2014年8月28日 星期四

畫線練習結束

    花了一周的時間研究畫線的功能聽起來似乎有點扯,不過我自己倒是喜歡這樣的學習方式,可以比較深入的了解,而不只是會用而已,不過五天的時間中有兩天都花在想多邊形的公式,還把三角函數拿出來複習一翻,然後就是卡在corona本身一些API的限制上了。

   原本書上的範例是給你十個坐標點,然後用display.newLine的方式去吧線段畫出來,而因為display.newLine只能畫單一線條,所以要再用append{}來把所有的線段接起來變成一個五角星形,然後我就在想,實務上如果每次都要去找出這十個點來不是很浪費時間嗎?為什麼不直接寫個函式去產生要的多邊形,然後就開始在研究正多邊形的一堆數學,然後又對芒星類形的畫法感到興趣,所以也一併做了不少研究,反正我試了一堆算法,有些可以做到有些則是做不到,心得大概是:

    1.我發現有display.newPolygon這個API,只要把十個座標點丟進去就可以幫你畫出一個多邊形來,結果書上卻只教人一條線一條線的接起來?
    2.display.newPolygon無法處理有交叉線段的多邊形,可以畫出圖形,但是只有線條,而且會出現警告
    3.採用display.newLine接起來的多邊形,基本上還是一個線段物件,所以它的軸心是以第一個線段來定義的,旋轉之類的也是在線段基礎上,這意味著我用線段接起來的多邊形在旋轉時,並不是以多邊形的中心來旋轉,而是以第一個畫出來的邊線段來旋轉
    4.我想過一些比較變態的方式要來解決我遇到的問題,不過後來都算了,只是練習而己,不要搞得太複雜
    5.使用display.newPolygon時,它並不會照著你給的頂點座標去定位多邊形,而是以你給的第一組位置坐標做為多邊形的軸心,然後以這個軸心為中心去重新定位各點的置,簡單來說,你提供的各頂點坐標只是一個相對參考值,corona會自己再去算出一個新的頂點坐標來畫多邊形
    6.我有試著用Group的方式來組織多個多邊形,但這會讓最後的引用變的麻煩,比如你得用group[i]的方式去一個一個改變group中的物件的屬性。
    7.lua 語法沒有switch case的概念,只能用if...elseif..end或利用table的特形來達到類似switch case的使用

    最後我寫了一個可以產生三種正多邊形(正多邊形,正星形,正芒星)的函式來用,比如書上的範例自然是豐富許多,也初步掌握了corona SDK及lua言法的一些特性。




一開始完成的函式,可以算出各頂點的座標,
然後把線段接起來變成星形或多邊形

使用newPolygon API時會重新定位各頂點座標,
圖上下方的線段兩端點是正確的座標點,
但是可以看到三角形為了配合API 的限制,所以有了偏移

正星形要畫出來並不難,而是畫完後不好使用,因為它只是線段的集合,
無法填滿,要修改屬性也得一組線段一組線段的改。

最後的成果,仿書上範例透過enterFrame讓圖形旋轉,
由於我的函式可以產生各種多角星形,
所以畫面看起來有趣多了。


2014年8月15日 星期五

一定要從Hello World開始

  雖然一直都有疑惑為什麼一定要先寫Hello World,但最終還是從這裹開始練習了,我當然也有去查過世界上的第一支程式就是Hello World,所以之後大家都從這裹開始。

  原本是打算今天要先熟悉GIT的,不過後來想想自己也還沒開始正式的寫案子,所以應該先把基本的東西都弄熟了,再來加入GIT的世界;然後又花了點時間研究如何在Eclipse中來啟動Corona模擬,一直都不成功,我懷疑是MAC OS的問題,所以明天回家後用PC測試一下就知道,所以最後結論就是用官方推薦的Sublime這個編輯器來寫程式碼。

  把Hello World這個範例檔拿出來研究了一下,然後看到作者放著display.newText中的坐標不用反而另外使用變數.x的方式來放置文字覺得很不解,所以動作做了修改,結果發現在API中的參數是可以直接做一些運算的,所以另外以變數的方式去放置實在看不太出來必要性,然後自己又加上了迴圈來測試在API中帶入變數會如何,發現區域變數和全域變數會打架,Lua中的區域和全域變數的概念和我以前學的程式好象有一些不一樣,這個問題打算留到明天再來研究,反正後來做了調整也把問題解決了,最後得到一個自己修改後的Hello World如下圖,在For迴圈中調用Display.newtext時,同時針對坐標及顏色都做了變數的增量,做出這種顏色漸變,位置漸移的效果


2014年8月14日 星期四

第一天的進度

  第一開始只是簡單的環境安裝,寫了幾行測試用的程式,但是己經覺得很踏實了,前兩周都還只是拿著書在看而己。

  說到書,目前市面上有關corona SDK的中文書似乎只有兩本,我買了最近出的那一本,不過看了前面幾章就發現到一些錯誤,我想這大概是因為兩個共同作者都不算是技術底的,只是會用而己,看來等我熟悉一點之後,也可以自己來寫本書了。

  目前書中最明顯的錯誤就在講述流程控制時,認為for 迴圈只能呆板的一次增加一個數值,只有While迴圈可以透過在敍述句中以x++或x=x+2來控制遞增量,只要有一定的基本程式語言概念的大概都會看出這樣的說法是有問題的吧。

  然後我在官方的教學影片中找到了解答,基本上有兩種用法,一個是家知道的固定次數的使用方式:

For i=start , stop do

   some code....

end

但事實上,完整的語法和其它語言一樣是可以放入遞增量的,只是沒寫時預設是i++這樣的意思,所以你可以這樣使用:

for i =1 , 10 , 2 do

     print(" i ")

end

這會印出1,3,5,7,9

也可反過來改成遞減量:

 for i=10 , 1 , -3 do
     
       print(" i ")

 end

這會印出10,7,4,1

第二種用法有點神,但也合理,說是用Key,value的成對方式來使用,這和其它語言中直接把陣列放到for迴圈中一個一個取出來的意思接近,詳細做法看官方影片吧。


MACBOOK入手,準備開始正式的APP之路

  從去年結訓到現在也一年了,中間不但沒找到工作,反正做踏入保全業,到現在為止也做了快一年的保全了,中間也曾打算去考高普考,不過在朋友的點醒下,現在開始決定邊寫APP邊準備高普考,比較不會浪費時間,又能保持對程式的練習及累積作品。

  前天下了訂買了MACBOOK PRO Retina,主要是因為新款要推出,然後各大通路在降價清庫存,光PCHOME就降了六千元,我算一算還滿划得來的,反正做開發的話,不差那一點點效能,等以後做出成績來,再去考慮升級高階的機種,然後昨天機器到了,花了一天的時間熟悉及安裝開發相關的套件,最後還裝了暗黑3。

  然後今天把MACBOOK帶到工作的社區來測試,用手機3G上網,一切看起來都還滿不錯的,因為這個社區目前沒什麼住戶,而且是個小社區,我估計之後就算住戶都住進來也不會有什麼事,所以晚上的時間都可以用來看書和練習寫程式,我的目標是在年底前可以完成一支APP。

  目前的開發環境主要是架構在corona sdk上,這是朋友建議的framework,不過有些東西可能還是只能回native去開發就是了,所以我兩邊得要摸熟才行,至於APPLE的開發環境,則是要這兩個都熟了,再來碰了。

2013年7月16日 星期二

千萬筆資料寫入DB測試

  前陣子找工作的空檔一時興起就寫了個威力彩的出號程式,和一般的亂數出號來說,我多加了一些統計分析的方式,再去計算出最有中獎相的幾組號碼出來做為參考。

  前兩天突然想要擴大比對的範圍,如果全部的組合都拿來比對會如何?所以產生了一個全部組合的需求出來,於是用了PHP很簡單的寫了個威力彩的全部組合程式,非常暴力的用了七層For迴圈來產生號碼。

  然後又想說得把這些數據放到DB去,所以就寫了語法要把資料插入MySQL中,結果第一次跑下來,一個小時跑了400多萬筆,全部2200多萬筆跑完估計要五六個小時,於是我就中止了程式,然後上網找資料,後來把Table的index和PK先拿掉,自動增號也取消改成直接寫入序號的方式,最大的改善是在迴圈中把原本一筆一個insert的語法改成先組合先好幾個Values的語法後再insert,這下時間縮到51分鐘左右,有進步,但因為在找資料的過程中有看到一些討論,所以我就想再精進一下。

  於是我發現我原本直接在迴圈中做insert並不聰明,因為迴圈會逐層少1來跑,造成每次insert語法後面的values個數都不同,我試著把inser搬到不同層的迴圈去執行,用意是讓inser 一次的values數目可以多一些,但樣做沒有解決根本的問題,所以最多只能縮到22分鐘而已。