Time of Update: 2018-12-07
註:這是以前寫的一箇舊電影效果的DEMO,放在了GAMERES.COM上(http://data.gameres.com/showmessage.asp?TopicID=39679)。現在回想起來,還是蠻溫馨的,故把它轉貼於此。比較簡陋,還請海涵。由於當初機器配置不高,而動畫速度沒有設定為與FPS無關,所以在現在的先進機器上可能動畫速度會很快。懶得改了,想看的就將就將就吧。^^To Begin
Time of Update: 2018-12-07
1.Fresnel效果一般來說,當光到達2種材質的接觸面時,一些光在接觸面的表面被反射出去,而另一部分光將發生折射穿過接觸面,這個現象稱為Fresnel效果。Fresnel公式描述了多少光被反射和多少光被折射。下面是Fresnel公式的一個近似:reflectionCoefficient=max(0,min(1,bias+scale×(1+I·N)power))反射係數reflectionCoefficient的範圍被限制在[0,1]之間,我們根據下面的公式使用reflectionCoeffic
Time of Update: 2018-12-07
Skyman MD2檔案裡儲存了模型各頂點的法線的索引(byte lightNormalIndex),用這個索引來從法線表中取得該法線,該法線表在utils3/qdata目錄下的anorms.h檔案中,如下所示:{-0.525731, 0.000000, 0.850651}, {-0.442863, 0.238856, 0.864188}, {-0.295242, 0.000000, 0.955423}, {-0.309017, 0.500000, 0.809017}, {-0.162460,
Time of Update: 2018-12-07
上次的DEMO的實現是把Base Texture和Irradiance一起進行散射計算的,所以皮膚紋理也受到散射的影響而變模糊了,從而使頭髮,眉毛和鬍子等變得比較模糊。這次我只對Irradiance進行散射計算,將次表面散射計算得到的結果與Base Texture進行融合,這樣皮膚紋理就不會變模糊了,可以得到更好的效果。下面是效果(開啟了顯卡的反走樣(4x)和各向異性過濾(16x)功能):1. 沒加皮膚紋理:2.
Time of Update: 2018-12-07
面部動畫是電腦動畫裡的一個研究熱點和痛點。個人認為最有前途的面部動畫的方法是基於偽肌肉(向量肌肉)模型。它是由Waters於1987年首次提出的,是近幾年最流行的模型之一。其思路是對多邊形網格進行近似抽象的肌肉控制。該模型使用兩類抽象肌肉:(1)線性肌肉:用於展開;(2)括約肌:用於擠壓。它們只在一點上與網格空間相聯絡,有方向性指定(2種肌肉變形時都是計算某一點的角位移和徑向位移),因此肌肉的控制獨立於具體的面部拓撲。該模型的控制參數基於FACS(Facial Action Coding
Time of Update: 2018-12-07
通過SM3.0的頂點紋理拾取(Vertex Texture Fetch,簡稱VTF)技術在頂點shader中計算每頂點的Subsurface Scattering,極大的提高了效能,在1024×768的運行視窗下,開啟4x的消除鋸齒,FPS也能穩定在60幀左右,渲染效果也還可以。下面是:1.有貼圖:無貼圖:2. 有貼圖:無貼圖:因為這裡採用的Subsurface
Time of Update: 2018-12-07
這幾個概念是3D圖形學中很重要的內容,雖然基礎,但對理解3D圖形世界非常關鍵。所以瞭解透徹是很有好處和必要的。下面先講講Z座標。Z座標和X、Y座標一樣。在變換、裁減和透視除法後,Z的範圍為-1.0~1.0。DepthRange映射指定Z座標的變換,這與用於將X和Y映射到視窗座標的視口變換類似,但DepthRange映射又與視口映射有所不同,因為深度緩衝的硬體方案對應用程式來說是隱藏的。調用DepthRange的參數是[0.0,1.0],與一片斷相聯的Z值(深度值)表示到眼睛的距離。在預設情況下,
Time of Update: 2018-12-07
經過一段時間的嘗試,終於有所進展,採用Spherical Mapping來類比Smooth Shading。Spherical Mapping是個好東西,可以類比Specular light, NPR Outline等效果,而且效能也不錯(採用傳統的光照計算來實現要比較簡單,但計算量驚人,目前的FLASH是承受不了的)。下面來一張:由可以看出,目前有個問題是面和面之間有個縫隙,這是由於浮點精度誤差引起的,接下來就著手開始解決這個問題。
Time of Update: 2018-12-07
在做一個MFC軟體的時候有一個這樣的需求,就是要有類似與AutoCad的命令輸入框,如所示: 本著不重寫已有功能的原則,在MFC中發掘了一圈,沒發現有可用的現成控制項,上網搜了一下,發現有人做過,但竟然還收費出售,so faint,只能自己動手做一個。其實思路還是蠻簡單的,就是放個Edit控制項處理它的鍵盤輸入事件,防止刪除之前的記錄和提示資訊,還要處理結束命令,比如斷行符號、空格之類的。主要有以下幾個步驟:1. 將輸入框內的字串分段,比如分成三段log,
Time of Update: 2018-12-07
Halftone(半調法)是非真實感渲染(NPR)的一種,它用來類比鉛筆和鋼筆畫的風格(pen-and-ink)。它最早來源於印製白紙黑字的書報,所有的連續色調影像,無論是彩色的,還是灰階的,由於只能用黑白兩種顏色表示,所以必須採用總體亮度分布大致相同的方式。 半調法中決定可視效果最基本的因素是halftone screen,這是一個包含閾值的灰階紋理。要從給定輸入映像建立經半調處理過的映像,將每像素的亮度與halftone
Time of Update: 2018-12-07
“吳道子畫山水,有筆而無墨;項容有墨而無筆;吾當采二子之所長,成一家之體。” 中國繪畫源遠流長,有著豐富多彩的遺產、獨特而鮮明的藝術特點,在東方乃至世界都自成體系,別具一格。在獨具特色的中國繪畫中,又以文人水墨畫最能體現中國繪畫的特點。
Time of Update: 2018-12-07
當使用PS來進行2D影像處理的時候,實際上仍然在做3D成像。我們渲染多邊形直接和螢幕對齊,然後覆蓋在螢幕上。我們直接把2D Pixel Shader應用到這個表面上。 最常用的方法是用一個簡單的與螢幕對齊的矩形(兩個三角形)來覆蓋螢幕。如果定義了一個3D單位大小的正方形,所有的點在x和y軸範圍從-n到n(n一般取0.5或1.0),而z座標為0。然後用下面的代碼將它與螢幕對齊。注意在D3D中,紋理座標位於每個紋元的中心,而不是以一個角為中心。這個微小的位移很少能夠被肉眼看到。但是,
Time of Update: 2018-12-07
經過一段時間的摸索,即時皮膚的次表面散射(SSS)效果終於做出來了,個人感覺效果還可以,呵呵!下面是DEMO的運行(將同一狀態下的開啟SSS效果和關閉SSS效果進行比較):(1)開啟SSS效果:關閉SSS效果:(2)開啟SSS效果:關閉SSS效果:(3)開啟SSS效果:關閉SSS效果:程式下載:SkinDemo.rar 運行說明: 使用OpenGL+GLSL編寫,顯卡驅動需支援FBO擴充,最好是支援OpenGL 2.0;操作說明: 見程式包裡的readme.txt
Time of Update: 2018-12-07
1. glMultiMatrix是右乘,比如: glLoadMatrix(&m1); glMultiMatrix(&m2); 相當於:m1 * m2.2. GLSL的vec4有3種分量形式xyzw/rgba/stpq, 注意到的r分量是指顏色r分量, 習慣上的紋理座標分量strq的r由於和顏色r衝突,改作p.3. GLSL可以只有PixelShader, 沒有Vertex Shader, HLSL不支援. vs_3_0 shader executed
Time of Update: 2018-12-07
剛在TopLanguage上發的一帖,回顧自己的編程之路。所有人的貼在這裡,推薦大家看看。我學程式的路也走得比較詭異,不是那種紮紮實實一步一步往上走的。高中畢業到大一,開始淘騰程式,基本覺得好玩的都去學學,主要是VB,混著還有Html,ASP,ActionScript等等之類。總之是雜七雜八,每樣沾點皮毛。這算是第一個開頭階段。由於本科學的是飛行器動力(研究飛彈發動機...),只能自己選一些電腦方面的選修課滿足慾望。於是碰到了對我影響極大的金旭亮老師。金老師是那種超負責超有激情的人,從他身上你可
Time of Update: 2018-12-07
Subsurface
Time of Update: 2018-12-07
在西方,水彩畫和水粉畫是可以統稱為Watercolor的,水粉畫通常也稱為不透明水彩畫或樹膠水彩畫(Gouache),兩者既有相似之處,又有所區別。水粉畫是以水作為媒介,這一點,它與水彩畫是相同的。所以,水粉畫也可以畫出水彩畫一樣的酣暢淋漓的效果。但是,它沒有水彩畫透明。此外,水粉畫和油畫也有相同點,就是它也有一定的覆蓋能力。而與油畫不同的是,油畫是以油來作媒介,顏色的乾濕幾乎沒有變化。而水粉畫則不然,由於水粉畫是以水加粉的形式來出現的,乾濕變化很大。所以,它的表現力介於油畫和水彩畫之間。這裡我
Time of Update: 2018-12-07
紙乃“文房四寶”之一,是繪畫藝術的重要載體。中國古代書畫用紙的上品是產於安徽宣州的“宣紙”,自古文人墨客就對宣紙珍愛有加,贊其“滑如春冰密如繭”。自從有了紙,人類文明進步才會加快,藝術才有了新的發展。現在雖然電子媒體迅猛發展,但是人們還是對傳統的“紙”懷有親切感! 我使用Cellulat Texture來類比“紙”的效果,Cellulat Texture的詳細介紹請見我的《用GPU實現Cellular Texture》一文。這裡我把參數設為(取消隨機擾動):
Time of Update: 2018-12-07
Pixel Shader功能Shader 2.0 Shader 3.0 描述Shader長度 96 65535+ 允許採用更複雜的陰影、光線和程式 動態分支 不支援 支援 通過跳過無關像素上的複雜著色以提高效能 Shader消除鋸齒 不支援 內建派生指令 開發人員能夠計算螢幕空間以調整著色頻率或者進行多重採樣處理,以降低畫面失真 背面寄存器 不支援 支援 允許在一次處理工序中處理雙面材質的光源 插入值色彩格式 最低8-bit整數 最低32-bit浮點
Time of Update: 2018-12-07
前段時間陸陸續續讀完了pangba老大力薦的Why Programs