RectToPolar()
是 將直角坐標系 (笛卡爾坐標系) 的 uv 坐標,轉化為極坐標系(θ,r)?
-
uv - centerUV
:將坐標原點平移,使(0.5, 0.5)
變成原點。 -
r = length(uv)
:距離中心點的半徑(從中心向外擴散)。 -
θ = atan2(y, x)
:當前像素相對于中心的角度(從X軸正方向逆時針為正)。
但這段代碼的設計哲學并不是你想的那樣。
它直接使用極坐標 (θ, r)
當作貼圖的 uv 來采樣,換句話說:
🌈 它不是在“原圖 uv 空間”修改,而是:
使用一個 特殊準備的貼圖(它本身是極坐標展開形式),
然后在極坐標中移動采樣坐標(r + time) → 直接采樣該貼圖。
所以這段代碼背后其實隱含了 貼圖是以極坐標方式展開的結構。
也就是說,這張要采樣的圖,里面的數值信息,就是基于
這一段的規則而響應去設計的形狀?
? 完全正確。這張要被采樣的貼圖(_MainTex
),它的紋理內容是專門為極坐標結構而設計的。
橫軸 U(0 → 1):代表 θ(角度)從 -π → +π ?
縱軸 V(0 → 1):代表 r(半徑)從中心 → 外圈
xxxx
增加了頂點色,對應的就是流動時的,環外淡入,中心淡消失
這里的頂點色是屬于模型的,是莊佬自己的disk模型里面帶上的數據
appdata里面可以直接取出
【TA入門】極坐標:原理與實現_嗶哩嗶哩_bilibili
void Rotation(inout float3 vertex) {
用 inout 代表直接修改傳入的 vertex 坐標本身。
-
_RotateSpeed
控制旋轉快慢,_RotateRange
控制最大旋轉角度。 -
frac(_Time.z * speed)
:把時間變成[0,1]
的周期。 -
* TWO_PI
:轉成角度(0~2π)。 -
sin(...)
:讓角度來回正負擺動。
要轉換成弧度制的喲,才可以放到sin() 和cos()里面得出最原始親切且標準的0到2π變化
直角坐標系轉成極坐標
同一個點的表示形式變化
可輸出的含義依然可以相同,可以通過平面坐標得到一張uv的準確位置
通過極坐標也可以
src源信息沒有發生變化
信息的表現形式sub src---只能針對單獨一個 信息讀取方read,才有效
一種subsrc只能給出一種規范的讀取方法,或者說因為solo read的出現,才導致subsrc的產生
subsrc可以被非規范的讀取,但subsrc此時失去sub的形式意義
轉換極坐標,是創建subsrc,而讀取方式-----對應------sub的誕生
坐標系的轉換,emmm
xxxx
Everyone tends to favor those rigid yet honest and motivated junior colleagues. Such individuals are easy to guide. In contrast, those with overly wild and radical ideas, especially when they are new to the organization and hold relatively low - level positions, are generally difficult to mentor.
so,you know what to do
sd了解一下
第四集 了解材質的工作流程_嗶哩嗶哩_bilibili
xx
做游戲引擎要看的書。。
頂點色作為參數傳入
是貼合模型uv的四個通道
實際上只刷了三個通道
在xz軸上的扭動,是兩個直接相加的,對頂點的x和z位置移動相互獨立,可以完美分離疊加
通過r遮罩,控制移動的數值生效范圍-身扭動
通過反r得出腦-腦旋轉
x和z方向的扭動
通過vertex.y,加在sin(x+O)里面,y正好規則向下
這里直接再乘以一個值,從而控制波長
總結,可以疊加性,前后可以不先管
效果疊加沒問題
寫一條語句就默認此時別的不動,比如默認y規律變化從而控制了一個波長的參數
LIGHTING_COORDS(5, 6)
vert里面的normalwS是模型上的一套的,是建立tbn矩陣
而想要在frag里面采樣更精準的normalmap,所以要把tbn矩陣傳出來,給frag里面解包再轉換成真正的世界法線--基于更精準的normalmap
xxxx
給三個指針單獨繪制了頂點色
要實現,首先刷頂點色,三個通道挑出三個時針
外暴露三個旋轉角度控制值給c#修改
在內部接受一個旋轉角度,直接改變到正確的頂點位置
遮罩識別出位置,然后進行偏移,
給這個像素,旋轉點
_RotateOffset ("旋轉偏移", float3) = (0.0, 3.205, 0.0)
這樣寫property是不可以的
必須用vector
純p,假的,中間的部分就是整個針在轉,甩著轉
vertex.y -= offset * mask; // STEP 1: 先平移到中心點
float radZ = radians(angle * mask);
float sinZ, cosZ;
sincos(radZ, sinZ, cosZ);
vertex.xy = float2(
? ? vertex.x * cosZ - vertex.y * sinZ,
? ? vertex.x * sinZ + vertex.y * cosZ
); // STEP 2: 繞Z軸旋轉
vertex.y += offset * mask; // STEP 3: 再移回原位置
中間的旋轉部分,是默認中心是在原點的旋轉方法
首先指針也是同一張uv上的采樣塊圖
要做到旋轉圖
就是旋轉,采樣的規則,讓之后的采樣可以用歪的方式采樣三根針
然后顯示出來的就是三根針在移動
旋轉的方向是單獨z angle
所以,必然是有一個offset值,而且必須要準確,
旋轉了采樣的手段,
旋轉的是采樣的手段,uv圖始終都是三根指針豎著放在固定的位置
可以在shader中修改位置,
純p,和后面的采樣完全獨立,采樣坐標獨立,此是在之前移動頂點的
為什么移動了vertex的位置,但沒有影響采樣?
控制單個像素的時候
只可以在采樣上改位置,
此時三角片已經固定,三個點vertex是固定的
在函數里可以修改頂點的位置,也就是修改三角片的形狀
確認三角片形狀之后才允許,采樣,因為必然的插值需要
插值是必然的,應對于vertex的變化
uv是可以在vert 函數里被修改的,uv傳入給vert,是模型,
appdata里面的uv是頂點的uv值
是頂點要采樣的位置要在一張uv圖上的哪個精確點
模型的默認uv,轉換為正常0-1的二維圖,而上面的點Scatter,多個獨立的雕像
appdata給的是副本
單個雕像點,二維是uv坐標,三維是vertex坐標
數據同源,但分兩份,可以分別操作,相互isolate,
可以修改vertex三維形式信息,此時uv二維形式的雕像點信息不變
而到frag處理時,二維的信息回被依然正常使用,三維的vertex變化并不影響二維的采樣
進入frag,各個雕塑點被固定(vert可修改副本三維的雕塑點,進入frag雕塑點固定),之間開始被插值,被frag使用
那么雕塑點,,frag里面如何識別其中的插值?自己插在哪? pass
blender video editing里的序列編輯器調整重復的時長怎么調
這個干什么的
---自動關鍵幀,自動了什么
只要雜播放頭下方,對任何場景里的物體做出了什么改變,blend會立刻把這個變化插入關鍵幀
2d
到新的一幀就清屏幕,以及保留上一幀的效果但是透明
gpencil默認花一幀就清掉上一幀的內容
洋蔥皮就是保留上一針的結果,可以調整透明度之類的參數
可以用多幀,前好幾針一起疊上來也沒有問題
xxxxx
賽博punk的變化,用頂點色通道,分離出使用特效的人和底座,人1底座0
需要兩套uv
這個設置是讓normalmap生效,像解包那樣
xxx
網格,塊狀的消散,帶有隨機性,的消散移動方向
分別制作的rgb三個通道(a純白)
Effectmap三個通道
首先一個切分通道,變成網格
模型面,消失-隱藏,分塊,這個塊的移動隨機性
第三個通道是模型格上的坡度值
(一般也不好命名,因為特效的shader的出創新成分很高)
uniform color clr,純色,在sd中作為節點使用
xx
特效紋理2,是3dnoise,
模型拽到sd里面,給出信息
選著模型,然后給出bake model info
可以在里面看到模型的多套uv,跳出要的那一套,然后,選擇需要的添加操作,這里選Position
就可以對應的烘焙成一張圖
bitmap是導入外部圖像用的
這么一看最種的效果里,連的節點并沒有用很深的變化,還算簡約
從模型里面得到了圖,然后切格子,為了需要,切割通道,把格子線加實,然后翻轉方便識別使用,之后用flood節點,把里面每個格子分開單獨處理,很簡單的連線,但也可以做出很不錯的效果
過程中,單獨的uv查看,也并不需要Material的參與,3d view可以不用
中間的線變化的非常急促,這張圖存的信息過于高頻---對比度高,并不利于壓縮
可以做的只有降低這種切分網格的密度
網格信息是模型提供,可以是三角面的形式,也可以是四角面,為了科幻感選擇了四面的切割方式
,是使用zbrush切割,得到好的切割圖,此時拉入sd中? 可以提取出好的這種模型上都是四邊形的切割形式
比起單獨開一張圖存一個通道,硬要把某張圖的空a通道里塞進去一張圖,不一定是優化,也一樣可能變成一張很大的圖
低頻信息,導出256 的大小就足夠了
xx
混亂度,打的高整個格子各自飛遠,為0則,完全不變,只是消散效果
分三個材質控制了從腳到頭的消散效果
調快頭材質波速就會岔開
alphablend 是不預先乘以 透明度
頂點色,模型內置數據,brush刷,
xxxxx
02.引擎架構分層 | GAMES104-現代游戲引擎:從入門到實踐_嗶哩嗶哩_bilibili
psd這樣的文件格式,里面存儲的很多信息是需要再ps軟件上面,相應模塊的功能識別,才有用
而引擎是獨立的,沒有那么多時間管格式的問題,必須要統一,所以,會對Resource有要求
引擎中不管你是jpg還png格式,一定會被先轉換成dps格式,高效數據格式,轉換的就叫Asset
同理還有word比純txt要大
每個資產有獨立的序列號,相互之間的引用也是一種資產
Gc是資源層的概念,對資源的有效和無效化
老師在第一個半年并沒有寫很多的graphic feature相關的東西,也不是漂亮的render 和shader
而是在同一數據格式
不止渲染,渲染只是其中一個小部分
先tick logic,再tick render
這個姿態你無論繪制他還是不繪制他,他的這個姿態已經存在了,
此次出現觀察者,小明有一雙眼睛接受,成為一張2維的圖像
(張三有沒有打到李四,算邏輯tick,而與render無關,因為無論觀察是否存在,張三都打了李四,,而這個邏輯在接觸到網絡之后,會變的更加復雜)
相機的第一人稱晃動----游戲和游戲引擎在feature層打架,
曾經單核現在多核,是巨大的變化,logic和render分到兩個線程里,最基礎的多線程算法
profiling里判斷,每一個小窗口是不是均衡的吃滿的,如果有的很滿有的吃不掉,大概率是沒有采取高級的job式分發任務的多線程使用
游戲引擎里最不追求的就是計算的精確度,為了計算速度,偏離的準確完全不在乎
比如這個自寫的新近似計算方法,效率會遠高于系統的sqr方法
引擎的數據庫中廣泛使用的技術
一次性算四個向量,simd的core層的數學計算技術
xxx
在引擎的core層,像c++里面的各個數據結構,鏈表,數組,都要重新做一遍
因為一般的大量增刪數據過程中,會產生大量的空洞,而且內存的使用是不受你控制的
游戲引擎會申請一大塊內存,然后自己再內存里建一個小操作系統,這塊內存大小幾乎不變,不允許被干擾
----
把數據放在一起訪問,盡可能按順序來訪問,盡可能一起讀寫,引擎的內存優化三大方向
平臺層的權重沒那么小,說是引擎高下之分的地方也不為過
https://github.com/BoomingTech/Piccolo
104的引擎github
xxxx
shift在sd里直接拖動整個連接點
xxxx
coloso:殺手鏡頭是遠景,是像沒有透視一樣,非常長焦
Grease Pencil 對象中,有兩個核心繪圖組成部分:
名稱 | 作用 |
---|---|
🖊? Stroke(描邊) | 用線條繪制出來的輪廓,路徑數據 |
🎨 Fill(填充) | 用來填充封閉區域內部的顏色(可選) |
Grease Pencil 對象(Object)
└── 圖層(Layer)
? ? └── 幀(Frame)
? ? ? ? └── 描邊(Stroke)← 就是你說的 Stroke
? ? ? ? ? ? └── 點(Points)
所以:
🟥 Stroke 是 Grease Pencil 的基本構成單位之一,本質上是一段“手繪路徑”。
Fill
本身并不是一個“圖形”,而是材質屬性,綁定在封閉的 Stroke 上。
alt d 復制引用---blender
shift 右鍵? 轉折材質點
ev快,cycles是有噪點的慢渲染,高精
是兩種渲染方式,開發者盡量讓兩者結果相同
xx
保證網格大小盡量相同,對渲染有用
極點可以創造皺紋,但好壞摻半
眼睛和嘴巴附近不要做極點
加subdivision修改器,可以讓角色的建模細分,而對性能的影響則會消減許多,modifier便利于此
Mirror,用modifier里面的,也是可以的,插件就是添加修改器到object上
融并邊,刪除一個面中多余的線,點
形成了循環的結構,之后就能產生光影流動的感覺
----Mesh Tools 插件或 Pie Menu 插件,用了才有這個快捷輪盤
老手在建模的時候,這些快捷鍵是最優先使用,其他都可以省去
英文命令 | 中文對應名稱 | 快捷鍵 |
---|---|---|
Q) Shrink/Fatten | 收縮/膨脹 | Alt + S (默認) |
W) Smooth Vertices | 平滑頂點 | Ctrl + V 菜單中也能找到 |
E) Subdivide | 細分 | Right Click > Subdivide |
A) Bevel | 倒角 | Ctrl + B |
D) Loop Cut and Slide | 環形切割并滑移 | Ctrl + R |
Z) Extrude | 擠出 | E |
X) Inset Faces | 插入面 | I |
C) Knife Topology Tool | 拓撲刀具(切割工具) | K |
嘴這里的變形時,點變化不能張很大角度,這也是建模的一個難點
一開始就做大笑容是很困難的