diary
个人来说,写博客占用学习时间大概是伪命题,因为不写博客可能真的没怎么学习ORZ
简单写一个学习和日常的记录
没更新就说明又摸大鱼去了,基本每周或每两周记录一次,当周报!
2024/4/25
腾讯远程课题基本弄完了
正好组会要每次的论文总结,以后同步点论文分析
2024/1/22
期末大摆!直到寒假!一些要做的
学习一下腾讯的远程课题,ue5一点不会
调研小论文方向的一些最新内容
养生了,直接开睡
2023/12/17
试了用RNN网络做图像分类实验,图像的处理太抽象了调了快一天,最后全靠GPT的帮助才把图像数据成功输入到网络里
下周估计很忙,很多实验课节课,还要准备知识点
2023/11/19
期中基本结束,但任务还是比较多,一点点来完成
这周接触了一下ResNet、GAN、Nerf,基本理解其由来和基本实现原理
准备看一下 games104,会同步更新到博客,学完可能会去看开源引擎的源码,分析其设计和尝试修改,教程的样例引擎Piccolo终于编译过了,最逆天的一集拿MinGW摁编译MSVC的东西
C ...
mobildnerf
MobileNeRF: Exploiting the Polygon Rasterization Pipeline for Efficient Neural Field Rendering on Mobile ArchitecturesMobileNeRF (mobile-nerf.github.io)
施工ing
Instant-NGP
Instant Neural Graphics Primitives with a Multiresolution Hash EncodingInstant Neural Graphics Primitives with a Multiresolution Hash Encoding (nvlabs.github.io)
施工ing
NeRF
Representing Scenes as Neural Radiance Fields for View SynthesisNeRF: Neural Radiance Fields (matthewtancik.com)
施工ing
games104-Lumen
传统功夫
蒙特卡洛积分Monte Carlo Integration,基于采样Sampling
优化:主要对采样的方式进行优化
RSM:光子映射
LPV:分块,光线在块内碰撞
SVOGI:片元变体素
VXGI:上面的优化,clipmap存储数据,近处voxel更细远处更粗
SSGI:屏幕空间,可用于镜面效果等
Lumen
基础:SDF,面片sdf,由于连续函数可微,导数就是法线方向,光线步进算法,阴影计算等都可以大大简化,一般分4层lumen,精度按照与摄像机的距离逐渐降低
核心:在表面附近放置大量probe
Mesh card:每个物体6个面,采样,各种信息(法线、深度等等)
surface cache:4096*4096,存储一系列mesh card
games104-gameplay和游戏AI
gameplay事件机制
发布订阅模式
核心:
事件定义:可以用面向对象的类定义,但是如何扩展、如何热重载是个很大问题,利用反射写在外部文件?dll注入?
回调函数注册:GO没了咋办,空指针问题,强引用(shared_ptr,有东西没释放对象也不能释放)/ 弱引用(常用一点,对某一时刻查看场景中其他对象可以用如weak_ptr)
消息分发:循环队列事件池,加上多个不同类型的队列架构,大量消息的触发导致帧延迟,如何解决?
脚本系统
游戏逻辑,热更新,编译型语言不行
解释型语言闪亮登场,方便热更新,寄了也是虚拟机寄不影响引擎,非常哇塞
GO管理,利用解释性语言的垃圾回收!,适用于对象特别多的,简单的可以引擎内核直接管理
可视化脚本
blueprint蓝图!低代码平台
基础AI导航Navigation
地图表示
寻路:A*算法:启发式算法,g(n)+f(n)已经走过的距离+估计要走的距离,优先搜索估计最近的点,同时找到目的就结束计算(区分与迪杰斯特拉算法)
路径平滑:Funnel算法,烟囱收缩大法,很强,直接直线走
转向
主要用于车辆寻路
群体模拟
宏观定义:定义一个路线 ...
games104-动画、物理、粒子系统
动画概览
一些挑战
动作不可预测,如何realtime、如何对适配复杂的环境交互
表情细节
不同部位的动作如何融合
3D动画
DoF:Degree of freedom,自由度,刚体6个自由度,三维中的平移和旋转 3+3
几种实现方式:
早期刚体动画:方块,连接处不自然
顶点动画:可模拟布料、流体
Morph Animation(顶点影响权重,插值):一般用于面部动作
Skinned Animation(蒙皮动画):目前常用
基于物理:布娃娃Ragdoll、布料、流体、反向动力IK,有定点如何自然运动
蒙皮动画
mesh、skeleton(分为Joint、Bone)、刷蒙皮(顶点绑定骨骼)、骨骼动画
骨骼可以拓展至衣服、外饰、面部,武器(可以插在手部joint,插槽的概念),但最好定义好基础骨骼
Root joint,一般在模型最底层的中间位置,方便高度等位置表达
数学基础-旋转
三维空间中的旋转可以通过三个轴的旋转叠加出来,欧拉角,一般用于编辑物体,但是
当顺序不同时结果可能不同
难插值
难用于定轴旋转
四元数!
引入,复平面下的角度叠加可以用复数的相乘表示
群论定义 ...
games104笔记-开篇和渲染
简化的架构
Tool Layer:面向用户,DCC和引擎交互
Function Layer:tick,渲染+逻辑,etc…
Resource Layer:资源格式转换为资产(更高效的内部数据),GUID资产识别,资产生命周期管理(核心)
Core Layer:数学库,更高效的数据结构、容器,内存管理
Platform Layer:RHI(封装不同的图形API,向上提供统一接口)
Function 和 Core 可能有很多交汇
Game World
各种光源、人物角色、像机乃至空气墙、触发器都可以表示成对象Object
各种过于复杂的关系导致继承系统很难表示,引入组件components,可以看一下ECS模式
component-based Tick,相同组件同时tick,更加高效
事件系统,消息机制类似进程信箱通信,需要可扩展消息以支持物体间各种交互事件
场景管理,八叉树、BVH(bounding box)等等
pretick & posttick,多线程下统一时序
引擎中的渲染
可结合games101
一些挑战
场景中的大量物体需要渲染
复杂的底层硬件适配
稳定的帧率
...
docker
docker官方一个很好的入门教程Overview of the get started guide | Docker Docs
Overview
A container is a sandboxed process running on a host machine that is isolated from all other processes running on that host machine. That isolation leverages kernel namespaces and cgroups.
如果对OS熟悉的话,可以类比成一个从镜像文件构建的文件系统(多了隔离性)
Core
核心只有 container 和 image
简单来说,容器是镜像的一个实例,修改容器再把内容全部写入镜像,就像一个U盘,不管放到哪台电脑一插即用
就ubuntu镜像来说,可以理解为把其iso文件pull下来运行,你可以在ubuntu容器里各种操作,退出时把数据写入iso文件(对于应用源文件来说)
所谓的用户数据容器是只在临时空间存储的,如果直接放入image中会产生严重的安全问题(普 ...
cmake
cmake的小记录,最近在Linux上整活,正好学一下
暂时不涉及库文件的生成
文件树
123456# 项目标准文件树.├── CMakeLists.txt├── include├── linux.sh└── src
12345678# cmake后的文件树,可执行文件在bin中,构建在build中.├── CMakeLists.txt├── bin├── build├── include├── linux.sh└── src
CMakeLists.txt
CMakeLists感觉CMakeLists放最顶层方便一点,当然模块化的话就通过add_subdirectory递归地构建,基本满足目前的99%需要
12345678910111213141516171819202122232425262728293031cmake_minimum_required(VERSION 3.15)# set the project nameproject(test-cmake)# bin file output# you can also set others set(EXECUTABLE_O ...