三维图形学课程笔记,3D建模与游戏开发方向(unity3d,c4d,3dsmax, maya的对比与联系)
生活随笔
收集整理的這篇文章主要介紹了
三维图形学课程笔记,3D建模与游戏开发方向(unity3d,c4d,3dsmax, maya的对比与联系)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1、三維圖形學
- 2、3D建模
- 3、3D游戲
1、三維圖形學
三維圖形學課程期末復習筆記:
———————————————————————————————————————————————————————————————————————— 一、選擇題第2~3章 圖形硬件(選擇題) 1、幾何流水線 模型坐標系->世界坐標系->觀察坐標系->規范化坐標系->設備坐標系 坐標表示:三維場景從建模坐標到設備坐標的變換序列 2、軟件標準 ISO標準,GKS(第一個官方標準)PHIGS(第2個官方) OpenGL(SGI):工業界;平臺無關。 DirectX (MS):娛樂界;Widows平臺。 Postscript (Adobe):印刷業。第6章 圖元實現算法(計算題) 1、直線(2) 數值微分算法DDA,改進的Bresenham算法 2、圓(2) 中點Bresenham畫圓法(不會啊)、橢圓中點畫法(怎么判斷上下部分) 3、多邊形(1) 掃描線算法 4、走樣的概念 走樣的本質是,離散量表示的連續量的失真 走樣是不可避免的 反走樣的簡單方法是提高分辨率(過取樣,區域取樣是什么?)第7-10章 二維&三維 觀察&幾何變換(計算題) 1、二維變換 平移,旋轉,縮放 基于齊次坐標的變換:全部統一為矩陣運算(7-P38) 齊次坐標表示就是用n+1維向量表示一個n維向量(所以不是一一對應的),P(4,3)->P(4,3,1) 二維復合變換:先平移后旋轉 2、二維觀察流水線 Cohen-Sutherland裁剪算法 3、三維坐標軸旋轉 繞什么軸什么軸不變 9-P12 4、相對于任一參考點的縮放 先平移后縮放,再平移回去。 5、三維建模-觀察變換流水線(要考 10-P4) !!!!! 6、三維投影(差別,選擇題) 平行投影:易于排列或測量空間物體(三視圖) 透視投影:更真實(近大遠小)第14章 樣條表示(選擇題?計算題?) 1、造型技術 包括 ?樣條的表示 ?規則形體的表示 ?非規則形體的表示 2、插值和逼近樣條 當選取的多項式使得曲線通過每個控制點,則所得曲線稱為這組控制點的插值樣條曲線。 當選取的多項式使部分或全部控制點都不在生成的曲線上,所得曲線稱為這組控制點的逼近樣條曲線。 3、凸殼概念 凸殼是包含一組控制點的凸多邊形邊界 樣條以凸殼為界,這樣就保證了對象形態平滑地而不是不穩定地擺動著沿控制點前進。凸殼也給出了所設計曲線或曲面的坐標范圍,因而它在裁剪和觀察程序中十分有用。 4、逼近樣條 對于逼近樣條,連接控制點序列的折線通常會顯示出來,以提醒設計者控制點的順序。 這一組連接線段通常稱為曲線的控制圖,還可以稱為“控制多邊形”或“特征多邊形”。控制圖有時就是一條折線。 5、參數連續性條件 0階: x,y,z值相等 1階: 斜率切線相同,曲線方程有相同的一階導數 2階: 平滑曲線曲線方程有相同的一階,二階導數 6、參數連續性&幾何連續性 對于幾何連續性,曲線將向具有較大切向量的部分彎曲。 7、樣條描述方法——曲線描述 給定多項式的階和控制點位置后,給出一條具體的樣條表達式有三個等價方法: ① 列出一組加在樣條上的邊界條件 ② 列出描述樣條特征的行列式 ③ 列出一組混合函數或基函數 確定如何組合指定的曲線幾何約束,以計算曲線路徑上的位置。 8、Bezier樣條曲線和曲面(計算題?) 三次Bezier貝塞爾曲線,不斷逼近線框(特征多邊形),端點稱為(控制點)。 題:給出P1,P2,P3,P4, 構造一條貝塞爾曲線,參數為0,1/3,2/3,1第15章 其他三維對象表示 1、實體模型的三類表示 邊界表示:曲面分隔內部外部,包括多邊形表面模型和掃描表示2種。 構造實體幾何表示: CSG樹,光線投射算法 空間分割表示: 空間位置沒局表示,BSP樹,八叉樹 2、多邊形表面模型 幾何階段->光柵化階段,只有頂點著色器和片元著色器可編程 15-P20 3、粒子系統 渲染過程:公告板技術 粒子始終面向攝像機方向,需要用到公告板(Billboards )技術。 公告板技術,形象的來說,就好像一個人舉著牌子,無論你從哪個方向看向牌子,那個人都會把牌子朝著你的方向旋轉,你永遠只能看到牌子的正面。 如3D游戲中的血條和NPC上的名字(Non-Player Character不受玩家操縱的游戲角色)。第17章 光照模型(簡答題) 1、Phong模型 真實感圖形學中提出的第一個有影響的光照明模型。它是一個經驗模型。 2、光照計算發生在哪個階段? 光照計算發生在頂點操作階段,他在變換每個頂點的時候,會同時計算一下每個頂點的光照。 在固定流水線中,光照計算默認發生在頂點處理階段。為了效率! 3、Gouraud 明暗處理?(簡答題) 又稱為強度插值表面繪制,通過在照明對象的表面上將光強度值進行線性插值來繪制多邊形表面 ①確定每個多邊形頂點處的平均單位法向量; ②對于每個頂點根據光照模型來計算其光強度; ③在多邊形投影區域對頂點強度進行雙線性插值。 這種插值計算發生在什么時候? 在“光柵化”過程中,會對多邊形進行掃描轉換,此時正好就可在掃描轉換過程中對每個片元進行雙線性插值。 4、Phong明暗處理?(簡答題) 又稱為法向量插值繪制,對法向量進行插值來取代對強度插值。強度值的更精確計算、更真實的表面高光顯示及更少的馬赫帶效應。 ①確定每個多邊形頂點處的平均單位法向量; ②在多邊形投影區域上對頂點法向量進行線性插值; ③根據光照模型,使用插值的法向量,沿每條掃描線計算投影像素的光強度。第18章 紋理與表面細節 1、幾何紋理:基于物體表面的微觀幾何形狀 ? 凹凸紋理映射(Bump mapping) ? 移位紋理映射(Displacement mapping) 2、二維紋理映射的主要思想? 將一給定的紋理函數映射到物體表面上,在對物體表面進行光亮度計算時可采用相應的紋理函數值來影3、響光照模型中的參數 二維紋理映射都可采用紋理貼圖進行改變第21章 全局光照 1、全局 = 直接間接 2、光線追蹤 結束的條件(逃離到一定節點,超出最大遞歸深度。或者光線與光源相交) 基本思想:從視點向成像平面的像素發射光線,找到該光線相交的最近物體的交點。 如果該點表面是漫反射,則直接照射產生顏色,如果是鏡面反射,則折射跟蹤另一條光線。 3、表面繪制補充-片元操作 1、深度緩存 在投影時,每個投影點的深度也會被記錄下來,寫入深度緩存。 記錄的不是每個頂點的深度,在光柵化時,每個片元的深度會計算出來,寫入深度緩存。 用于消隱。(增加真實感) 2、Z-buffer 算法 計算題?? 3、片元操作順序(考試) 片元在寫入幀緩存之前要按順序經歷一系列的測試;在寫入幀緩存時也會經歷一些運算。 寫入幀緩存前的測試 裁剪測試 alpha測試 模板測試 深度測試———————————————————————————————————————————————————————————————————————— 二、簡答題1、說明OpenGL基礎庫,實用庫,實用函數工具包之間的差別 核心庫:gl開頭,包含了最基本的3D函數。 實用庫:glu開頭,43個函數,glu是對gl的部分封裝,包括紋理映射、坐標變換、多邊形分化等。 函數庫:實用工具庫(glut)。有基本窗口界面,獨立于gl和glu,是一個跨平臺工具庫。第17章 光照模型(簡答題) 1、Phong模型 真實感圖形學中提出的第一個有影響的光照明模型。它是一個經驗模型。 2、光照計算發生在哪個階段? 光照計算發生在頂點操作階段,他在變換每個頂點的時候,會同時計算一下每個頂點的光照。 在固定流水線中,光照計算默認發生在頂點處理階段。為了效率! 3、Gouraud 明暗處理?(簡答題) 又稱為強度插值表面繪制,通過在照明對象的表面上將光強度值進行線性插值來繪制多邊形表面 ①確定每個多邊形頂點處的平均單位法向量; ②對于每個頂點根據光照模型來計算其光強度; ③在多邊形投影區域對頂點強度進行雙線性插值。 這種插值計算發生在什么時候? 在“光柵化”過程中,會對多邊形進行掃描轉換,此時正好就可在掃描轉換過程中對每個片元進行雙線性插值。 4、Phong明暗處理?(簡答題) 又稱為法向量插值繪制,對法向量進行插值來取代對強度插值。強度值的更精確計算、更真實的表面高光顯示及更少的馬赫帶效應。 ①確定每個多邊形頂點處的平均單位法向量; ②在多邊形投影區域上對頂點法向量進行線性插值; ③根據光照模型,使用插值的法向量,沿每條掃描線計算投影像素的光強度。———————————————————————————————————————————————————————————————————————— 三、計算題【重點】 二維變換 DDA Bresenham 掃描線1、某圖形系統分辨率1024*768, 24位真彩色,計算幀緩存最小為? 1024*768*log_2{顏色總數2^24}/8 = 2.25MB2、二維圖形變換 & 規范化齊次坐標 (二維矩陣變換)(必考) 題:三角形ABC,繞點C逆時針轉45度,寫出變換矩陣和變換后圖形的規范其次坐標。 + 其次坐標就是,n維到n+1維,寫出坐標,后面加個1,((Ax,Ay,1)(Bx,By,1)(Cx,Cy,1)) + 變換矩陣T, 逆時針轉 = T1*T2*T3(先移到原點) 平移變換矩陣 = (100,010,xy1) 旋轉變換矩陣 = ((cos,sin,0)(sin,cos,0)(0,0,1)),逆時針θ,順時針-θ。3、直線算法(2個) 數值微分算法DDA畫直線(必考) 題:給出兩點,計算出每個點的增量。 k=△y/△x, x+=1, y+=k 表格:(x, y, int(y+0.5))中點Bresenham(必考) 題:給出直線兩個端點P1,P2,用Bresenham得到最佳逼近的像素點集,要5個點。 表格:(x,y,e,e+2△y) e=-△x, x=0,y=0,e=-8 , e1=2 (如果e>0, e=e-2△x, y=y+1) x=1,y=1,e=e1-2△x, e1=e+2△y4、曲線算法-三次Bezier貝塞爾曲線(1個)(可能不考) 不斷逼近線框(特征多邊形),端點稱為(控制點)。 題:給出P1,P2,P3,P4, 構造一條貝塞爾曲線,參數為0,1/3,2/3,1 公式:P(t)=(1-t)^3P1+3t(1-t)^2P2+3t^2(1-t)P3+t^3P4 然后用4個t代入參數算出P(t)關于P1~4的四個式子,然后代入點的坐標。5、畫圓法-中點Bresenham畫圓法(據說不考) ???6、填充算法(2個)(必考) 填充算法-掃描線填充 & ET表和AET表 題:多邊形,采用掃描線填充,寫出ET表和Y=6時的AET表 + ET表,交點左邊的線再到右邊的線 (當前交點x坐標,當前邊的斜率倒數1/k<垂直就0>,當前邊最大的ymax, ) 1—>(5, -3, 2, 空)->(5,3,3, 空) ET表只掃頂點 2->(2, 0, 7, 空)->(掃過了不用寫) 3->(11, 0, 8, 空) 4(沒有頂點就無視) 5->(5,-1.5,7, 空)->(5,2,8,空) 6, 7, 8兩個頂點就不用看了,邊掃完就行 + AET表(每條掃描線都要掃) 6->(2, 0, 7, 空)->(3.5,-1.5,7, 空)->(7, 2, 8, 空)->(11, 0, 8, 空)填充算法-種子填充(棧一定是14步)(據說不考) 題:要求畫出出棧順序和填充過程。 從S開始,每次當前出棧,然后"左上右下"入棧。 從出棧的元素位置開始,重復"左上右下"入棧。7、裁剪算法(1個)(據說不考) Cohen-sutherland + 給圖像窗口的9個區域編碼,"上下右左"依次1或0(在里面就是1)。 + 題:給出xmin,xmax,ymin,ymax, 以及兩條直線,求編碼過程和裁剪過程。 + 若A=0且B=0,都在里面,保留。若A!=0且B!=0且A&B!=0,都在外面扔掉。否則有交點,再次重新處理窗口內部的新直線。 A點0110,B點1010, A&B=0010!=0,所以舍棄。8、消隱算法(1個) - 真實感(據說不考) Z-buffer畫家算法 + 深度數組(存頂點深度),幀緩存區 (深度排序,光線追蹤)最后推薦幾個復習資料: https://www.bilibili.com/video/BV1NX4y1A7ZM https://www.bilibili.com/video/BV1hr4y147Ki https://www.bilibili.com/video/BV1Jr4y1U7zy2、3D建模
著名建模軟件對比:
- C4D 、Maya 和3DMax都是三維軟件,但區別在于各自的主要應用領域不同。
- 3DS max屬于元老級別的軟件,從02年左右就霸占市場。主要在建筑、機械領域比較強,因為這些行業需要用CAD作平面圖,兩者屬于同一家公司,適配性比較好。
Max綜合能力強大,支持各種插件、文件及游戲程序接口等等,兼容性非常高。 - Maya大概是在07年左右開始興起,功夫熊貓、玩具總動員這種國外三維動畫特效的制作會用到,但是MAYA的學習難度非常高。
- C4D一般用于影視后期,三維電商海報設計,平面設計,UI設計等。在這個方面有很多模塊比3dmax,maya強,也方便很多。并且類似ps的圖層式操作,學習起來也簡單很多。
C4D以高效的運算速度和強大的渲染插件在行業內著稱。 - 總體起來說,Maya太難不考慮,C4D運動圖形好用,3DMAX的功能更加完善。C4D上手快,3DMAX因為常年的更新增加功能,學起來的確需要的時間多一點。
建模知識學習:
- 三維建模在現實中非常常見,如孩子們堆沙丘城堡、搭積木的過程是三維建模的過程。
人腦中的物體形貌在真實空間再現出來的過程,就是三維建模的過程。實驗要求:實驗1:二維圖形建模 掌握繪制二維圖形,二維圖形編輯的方法。 知道如何使用Edit Spline(編輯樣條曲線)命令對二維物體進行編輯, 以及如何使用Lathe、Bevel、Extrude命令將二維圖形轉換為三維物體。實驗2:多邊形建模 了解各種基本幾何體類型; 掌握幾何體的創建方法以及創建復雜幾何體的方法; 掌握多邊形建模的基本方法及操作; 知道多邊形建模與其他典型建模方法的區別; 掌握低精度模型的建模方法。實驗3:典型建模方法 掌握使用布爾運算創建對象的方法,使用放樣建模創建對象的方法; 理解面片建模、NURBS建模等曲面建模的基本原理; 掌握面片建模的方法及應用的場合; 了解NURBS建模的基本方法; 能分析出建模過程中存在的問題并給出解決方案。實驗4:材質與貼圖 了解各種材質參數的含義及通道; 掌握常用材質的制作方法及常用貼圖的使用方法; 能用合適的通道為模型設置合適的材質貼圖; 重點掌握UVW展開及貼圖; 知道如何處理貼圖過程中出現的各種問題。實驗5:燈光與攝像機 掌握標準燈光的基本打法; 熟悉光度學燈光的打法及應用的場合; 掌握不同場合應用哪類燈光及參數的調整; 理解三維空間中攝像機的基本原理; 掌握攝影機的創建方法和使用方法; 知道攝像機動畫的設置方法。
教育版地址:
- Autodesk(CAD,3dmax,Maya)
https://www.autodesk.com.cn/education/edu-software/overview,每年可以申請一次 - Maxon(Cinema 4D)
教育版:https://www.maxon.net/zh/educational-licenses, 20/半年,限1次
建模軟件學習:
- 資料:https://www.bilibili.com/video/BV1nT4y1e7hf https://www.bilibili.com/video/BV1ur4y1T72V https://www.bilibili.com/video/BV177411P7d1
其他一些軟件:
- KeyShot是一款獨立的渲染器,不像Cinema 4D那樣,整合建模與渲染。
這使他可以承載其他軟件的數據進行作業,配合犀牛和proe等3D建模軟件使用。
keyshot是工業設計公司的主流渲染器。 - SketchUp草圖大師,是一套面向建筑師、城市規劃專家以及相關專業人員的3D建模程序。與其他3d軟件不同的是,sketchup創建模型的方式是**“畫”出來的**,十分的簡單方便,簡單的學習之后都可以上手它的應用。sketch up模型是也可以導入到C4D渲染。
3、3D游戲
Unity3D是什么
- Unity3d是一個開發游戲,主要用于手機游戲開發的引擎。什么是引擎,引擎就是工具的意思。
- Unity3d的編程語言用的是C#和JavaScript,但是大多情況是用的C#。
- Unity3d可以用于手機3d游戲開發(王者榮耀),移動端VR設備(手機VR眼鏡),AR(元宇宙),動畫游戲制作(動畫電影)等方向。
Unity3d學習的內容
- 角色控制(角色移動,鏡頭跟蹤,碰撞效果, 角色互動)
- 游戲UI(玩法設計,游戲界面,計分器,游戲結束,勝利關卡)
Unity3D軟件安裝
- VS2022+unity3D開發環境搭建
https://gwj1314.blog.csdn.net/article/details/124652720 - 教育版地址,每年可以申請一次
https://unity.com/cn/products/unity-student
部分Unity Shade程序題復習
void init(){GL float light position[] = {0,0,50,1};GL float am_color[] = {1,1,1,1};GL float df_color[] = {1,1,1,1};GL float sp_color[] = {1,1,1,1};glLightfy(GL_LIGHT1, GL_POSITION, light1_position);glLightfy(GL_LIGHT1, GL_POSITION, am_color);glLightfy(GL_LIGHT1, GL_POSITION, df_color); }實驗1-一個簡單的頂點/片元著色器(頂點輸出給片元) 球體Object+材質Material+顏色(著色器shade)實驗2-基礎光照 1. 編程實現 逐頂點漫反射光照 2. 編程實現 逐像素漫反射光照 4. 編程實現 逐頂點高光反射光照 5. 編程實現 逐像素高光反射光照 3. (選做)編程實現Half-Lambert光照 6. (選做)編程實現Blinn-Phong光照實驗3-基礎紋理 1. 編程實現單張紋理 2. 編程凹凸紋理(切線空間下計算和世界空間下計算兩種方式) 3. (選做)編程實現漸變紋理 4. (選做)編程實現遮罩紋理實驗4-透明效果 1. 編程實現透明度測試效果 2. 編程實現關閉深度寫入的半透明效果 3. 編程實現開啟深度寫入的半透明效果 4. (選做)編程實現透明度測試的雙面渲染 5. (選做)編程實現透明度混合的雙面渲染//--------------------------------------Part1.著色器----------------------------------------------//shader,輸入頂點著色器數據,輸出片元著色器數據 //結構:Shader->Properties+SubShader->Pass //數據:CGPROGRAM, #pragma, a2v&v2f, //頂點&片元著色器:v2f vert(a2v v) ; fixed4 frag(v2f i) : SV_Target//application - > vert -> fff -> pingmu CGPROGRAM #pragma vertex vert #pragma fragment frag//定義頂點著色器的輸入結構體 //a(application) to v(vertex shader), 數據:應用程序階段->頂點著色器 struct a2v{float4 vertex : POSITION; //vertex變量 : 模型空間的頂點坐標float3 normal : NORMAL; //normal變量 : 模型空間的法線方向float4 texcoord : TEXCOORD0; //用模型的第一套紋理坐標填充texcoord變量 };//定義頂點著色器的輸出結構體(也是片元著色器的輸入結構體) //v2f 用于在頂點著色器和片元著色器之間傳遞信息 struct v2f {float4 pos : SV_POSITION; // pos : 頂點在裁剪空間中的位置信息(SV_POSITION)fixed3 color : COLOR; // color: 為了把頂點著色器中計算得到的光照顏色傳遞給片元著色器 }// 將頂點坐標從模型空間轉換到裁剪空間 v2f vert(a2v v) {v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.color = v.normal * 0.5 + fixed3(0.5,0.5,0.5); // normal范圍為-1~1,調整至0~1(不同平面不同顏色)return o; }// 將插值后的i.color顯示到屏幕上 fixed4 frag(v2f i) : SV_Target{return fixed4(i.color, 1.0); }//--------------------------------------Part2.反射---------------------------------------------- //PASS//高光設置(只有高光有) Properties {_Diffuse ("Diffuse", Color) = (1, 1, 1, 1) //漫反射只有這個_Specular ("Specular", Color) = (1, 1, 1, 1)//控制材質的高光反射-顏色_Gloss ("Gloss", Range(8.0, 256)) = 20 //控制高光區域的-大小 }//定義lightmode得到一些unity的內置光照變量 (反射都要) Tags { "LightMode"="ForwardBase" } #include "Lighting.cginc"//定義和properties中屬性類型相匹配的變量 fixed4 _Diffuse; fixed4 _Specular;//值的范圍在0和1之間,只需用fixed精度定義 float _Gloss; //范圍很大,所以用float精度來存儲//頂點著色器-----v2f //燈光都要的吧 fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz;//漫反射&環境光部分 fixed3 worldNormal = normalize(mul(v.normal, (float3x3)_World2Object));//得到法線方向 fixed3 worldLightDir = normalize(_WorldSpaceLightPos0.xyz); //得到光源的方向//逐頂點部分 //高光(鏡面反射)部分 fixed3 reflectDir = normalize(reflect(-worldLightDir, worldNormal));//計算入射光線方向關于表面法線的反射方向reflectDir fixed3 viewDir = normalize(_WorldSpaceCameraPos.xyz - mul(_Object2World, v.vertex).xyz);//計算視角方向 //漫反射光照 o.pos = mul(UNITY_MATRIX_MVP, v.vertex);//頂點位置從模型空間轉換到裁剪空間中 fixed3 diffuse = _LightColor0.rgb * _Diffuse.rgb * saturate(dot(worldNormal, worldLight));//根據公式計算 o.color = ambient + diffuse;//逐像素------frag片元著色器 //高光(鏡面反射)部分 fixed3 diffuse = _LightColor0.rgb * _Diffuse.rgb * saturate(dot(worldNormal, worldLightDir)); fixed3 color = ambient + diffuse; return fixed4(color, 1.0);//--------------------------------------Part3.紋理(切線空間)----------------------------------------------Properties {_Color ("Color Tint", Color) = (1, 1, 1, 1)_MainTex ("Main Tex", 2D) = "white" {} //聲明紋理_Specular ("Specular", Color) = (1, 1, 1, 1)//控制材質的高光反射顏色_Gloss ("Gloss", Range(8.0, 256)) = 20 //控制高光區域的大小_BumpMap ("Normal Map", 2D) = "bump" {} //bump是unity內置的法線紋理_BumpScale ("Bump Scale", Float) = 1.0 //控制凹凸程度 }struct v2f {float4 pos : SV_POSITION;float4 uv : TEXCOORD0; //xy分量存儲_MainTex的紋理,zw分量存儲_BumpMap的紋理float3 lightDir: TEXCOORD1;//存儲變換后的光照方向float3 viewDir : TEXCOORD2;//存儲變換后的視角方向float4 texcoord : TEXCOORD0;//將模型的第一組紋理坐標存儲到該變量中 };struct v2f {float4 pos : SV_POSITION;float3 worldNormal : TEXCOORD0;float3 worldPos : TEXCOORD1;float2 uv : TEXCOORD2;//用于存儲紋理坐標的變量,以便在片元著色器中使用該坐標進行紋理采樣 };TANGENT_SPACE_ROTATION;//得到從模型空間到切線空間的排列矩陣rotation //使用ObjSpaceLightDir得到模型空間下的光照方向,再用變換矩陣rotation把它們從模型空間變換到切線空間中 o.lightDir = mul(rotation, ObjSpaceLightDir(v.vertex)).xyz; //使用ObjSpaceViewDir得到模型空間下的視角方向,再用變換矩陣rotation把它們從模型空間變換到切線空間中 o.viewDir = mul(rotation, ObjSpaceViewDir(v.vertex)).xyz;fixed4 packedNormal = tex2D(_BumpMap, i.uv.zw);//利用tex2D對法線紋理_BumpMap進行采樣 tangentNormal = UnpackNormal(packedNormal);//UnpackNormal得到正確的法線方向//--------------------------------------Part4.半透明度----------------------------------------------Properties {_Color ("Color Tint", Color) = (1, 1, 1, 1) _MainTex ("Main Tex", 2D) = "white" {} //控制紋理_AlphaScale ("Alpha Scale", Range(0, 1)) = 1//在透明紋理的基礎上控制整體的透明度 }Pass {ZWrite OnColorMask 0//設置顏色通道的寫掩碼,為0該Pass不寫入任何顏色通道 }o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);//內置宏實現上一句的計算 clip (texColor.a - _Cutoff);//判斷參數是否小于0,如果是就丟棄這個片元return fixed4(ambient + diffuse, texColor.a * _AlphaScale);//紋理像素的透明通道和材質參數的alphascale相乘總結
以上是生活随笔為你收集整理的三维图形学课程笔记,3D建模与游戏开发方向(unity3d,c4d,3dsmax, maya的对比与联系)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图灵测试其实已经过时了
- 下一篇: 自考学习记录 课程代码03708《中国近