当前位置: 首页 > news >正文

自由学习记录(69)

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

嘴这里的变形时,点变化不能张很大角度,这也是建模的一个难点

一开始就做大笑容是很困难的

http://www.lryc.cn/news/589385.html

相关文章:

  • King’s LIMS:实验室数字化转型的智能高效之选
  • 多目标跟踪(MOT)简单整理
  • 阿里开源项目 XRender:全面解析与核心工具分类介绍
  • 从基础到进阶:MyBatis-Plus 分页查询封神指南
  • WebAPIs基本认知,DOM基础介绍
  • 网络基础10--ACL与包过滤
  • k8s环境使用Operator部署Seaweedfs集群(下)
  • 删除k8s卸载后残留挂载点目录
  • 设计模式二:策略模式 (Strategy Pattern)
  • 医疗数据分析中标准化的作用
  • 新方法!家长可用安卓或苹果,远程管理孩子使用iPhone的时长
  • 1MIPI 转2MIPI,支持2560*1600,75HZ.
  • RS触发器Multisim电路仿真——硬件工程师笔记
  • 分布式存储之Ceph使用指南--部署篇(未完待续)
  • CF1916D Mathematical Problem 题解
  • 【Linux】线程创建等待终止分离
  • 【2026版】Java基础面试题
  • Linux 基本操作与服务器部署
  • 第二章 OB 存储引擎高级技术
  • C/C++宏定义中do{}while(0)的妙用
  • 4-Nodejs模块化
  • 国内第一梯队终端安全产品解析:技术与场景实践
  • Video Python(Pyav)解码一
  • 如何解决 Spring Boot 使用 Maven 打包后运行失败的问题(附详细排查步骤)
  • 【GEOS-Chem模拟教程第一期上】气溶胶专用/碳气体/全化学模拟
  • [锂电池]锂电池入门指南
  • Altium Designer 25 安装与配置完整教程
  • C 语言(二)
  • 期权做空怎么操作?
  • 软文营销怎么打造口碑扩散,让品牌声量快速增长