初始提交:知识库工作区
- 00.收件箱 - 01.待办 - 10.项目 - 20.领域 - 30.资源 - 40.归档 - 50.模板
This commit is contained in:
@@ -0,0 +1 @@
|
||||
参考抗日期间地道战,做一款深入敌后,组织敌后人民反扫荡,挖地道,埋地雷,打游击,毁铁路,最终进行大反攻,击败侵略者的游戏。
|
||||
@@ -0,0 +1 @@
|
||||
类似伊苏风格的复古游戏,伊苏的背景实际上是欧洲,那么我们这个游戏的背景就放在中国,当代信息科技社会因为天灾而瓦解,并且大陆发生了撕裂,整个中国大陆地区漂移到了远离其他大陆的地方。并且整个地区都被一道无形的力场封印。200年后,这道力场突然开始减弱,而外邦的冒险家来到了这个尘封已久的国度。
|
||||
@@ -0,0 +1,8 @@
|
||||
敲打变形,打铁的一切细节
|
||||
|
||||
除了打铁工具,人物环境等其他内容都是低模,
|
||||
铁匠是神圣的。
|
||||
|
||||
|
||||
剧情:
|
||||
主角被召唤到一个低模世界,矿坑。里面都是低模矮人。它们的铁匠技艺已经失传,于是通过仪式召唤了铁匠之神,帮助矮人们重新获得铁匠技能。
|
||||
@@ -0,0 +1,2 @@
|
||||
以小时候的记忆为核心,复原90年代-2000年左右的城市面貌。
|
||||
做一款以学生放学后的活动为中心的游戏,参考放学后少年
|
||||
@@ -0,0 +1,74 @@
|
||||
# 玩法
|
||||
扮演一个文明,从部落时代发展起,通过发展不同的科技和文化策略来延续文明,形成独有的文明文化。
|
||||
# 机制1-DNA融合收集
|
||||
- 每个氏族有自己的特色DNA(3-5条)
|
||||
- 和邻近氏族搞好关系通婚获得该氏族DNA
|
||||
- 通过触发隐藏条件获得特殊DNA突变
|
||||
- 生育人口获得DNA点数,使用DNA点数购买一些DNA
|
||||
# 地图
|
||||
地图是类似文明的六边形格子。
|
||||
# 机制2-科技树升级
|
||||
### 技术的获取途径
|
||||
- 脑容量增长到一定阶段获得
|
||||
- 某种机制使用次数达到一定程度之后获得
|
||||
- 人口相关科研点数获得
|
||||
### 技术的作用
|
||||
- 增加新的机制
|
||||
- 例如获得建造技术之后能够盖房子
|
||||
- 获得骨针之后出现裁缝职业
|
||||
- 获得制陶科技之后出现制陶人
|
||||
- 增加新的道具
|
||||
- 骨针
|
||||
- 犁
|
||||
- 兽皮衣
|
||||
- 增加buff(生育率+,食物储备+,木材储备+)
|
||||
- 例如:
|
||||
- 用火技术
|
||||
- 拾取野火
|
||||
- 熟食1
|
||||
- 持续燃烧(添柴)
|
||||
- 熟食2
|
||||
- 石器打磨2
|
||||
- 照明1
|
||||
- 聚居
|
||||
- 语言
|
||||
- 分工
|
||||
- 思维
|
||||
- 火种保存(阴燃法)
|
||||
- 热处理(能够打造高级石器)
|
||||
- 开垦(能够通过火烧将树林开垦为土地)
|
||||
- 生火(钻木取火,打火石
|
||||
- 能够生产陶器
|
||||
- 能够进行冶金
|
||||
- 工具制造技术
|
||||
- 直接锤击
|
||||
- 能够生产几种粗糙刮削器
|
||||
- 软锤技术/预制石核
|
||||
- 石球
|
||||
- 投石索
|
||||
- 锯刃
|
||||
- 兽皮加工
|
||||
- 压制法(骨棒精修刃部)粗磨
|
||||
- 箭头
|
||||
- 雕刻
|
||||
# 机制3- 政策
|
||||
|
||||
# 机制4-群众+精英+岗位
|
||||
群众主要作用在于提供基础数值,最基础的是人口。
|
||||
基于人口,有各种各样的数据
|
||||
- 出生率+死亡率,决定人口增长速度
|
||||
- 食物采集效率决定单位时间单位人口能采集多少食物
|
||||
- 食物消耗率决定单位时间单位人口消耗多少食物
|
||||
- 采集食物-消耗食物=盈余食物
|
||||
- 盈余食物充足,则产生更多精英点数
|
||||
- 精英点数能够产生精英。
|
||||
精英分两种,岗位精英和执行精英,岗位精英能够对社会产生各种影响。
|
||||
比如提高生产效率
|
||||
比如有的岗位精英自带机制或者某些技术,获得岗位精英可以直接解锁机制或者解锁技术。比如秦始皇作为首领可以直接获得统一文字政策
|
||||
岗位精英有词条,提供buff和debuff。
|
||||
执行精英有avatar,可以在地图上活动,可以被玩家直接操控,可以执行军事,建设,采集等任务。
|
||||
精英产出分等级,稀有精英产出概率低,越是动荡环境越容易产出理论和军事精英,越是和平环境越容易产出科技和生产精英。
|
||||
机制5-精英等级-师徒制
|
||||
精英可以升级,升级后精英能力更强
|
||||
精英可以师傅带徒弟,徒弟精英能够继承师傅精英的某条特质,并且成长速度加快。
|
||||
机制6-精英执行的任何操作都会增长经验,这些经验会提高文明等级。
|
||||
@@ -0,0 +1,81 @@
|
||||
扮演一名铁匠,开武器店,研究武器制作,零售,接批量订单,定制专武,卖装备给各种客人。
|
||||
# 设想方案二
|
||||
做成类似炼金术士风格的,核心玩法是1.专注体验制作过程,以剑举例,需要经过加热,锻打,回火,粗磨,淬火,细磨等基础工艺,完成这些基础工艺,即可打造出一把剑。但是每个步骤又有很多细节方法与步骤,通过一些步骤的调整与操作,来达到武器硬度与韧性的完美结合。制造出来的武器根据选择的步骤与每一步操作的质量来决定最终整体会形成什么样的战斗力水平(捅🗡伤害,劈砍伤害,耐久度),如果操作中有较大失误,则武器会废掉。并且锻造每一种武器会对需要的工艺步骤、造型和强度有一定的要求,满足条件就会成为某些特定兵器,否则就会锻造出普通的剑。锻造武器需要不同材料,可以用自己锻造的武器去对应的场景采集或者打怪获取素材。最终目标是要造出一把神兵利器。
|
||||
|
||||
|
||||
|
||||
用最低级的锻造设备,也可以造出顶级的刀。
|
||||
初期不要探索的部分,专注迭代锻造的部分。主要尝试实现以下功能:
|
||||
1.敲打铁块,在敲打范围内受力冲击导致铁块变形。
|
||||
1.1受敲打区域变扁,范围内对应的点下沉。
|
||||
1.2 铁块体积应该不变,铁块一侧被铁钳子固定,因此会向另一次延展以保持体积不变。
|
||||
1.3敲打区域附近的区域根据距离远近进行变形,与核心区越近,变形越接近核心区,与核心区越远,变形越小,知道达到某个距离后不再变形。这部分变形也要算到延展范围。
|
||||
1.4 被敲打的部分,如果厚度越薄,能被敲下去的程度越低。
|
||||
1.5 被敲范围内如果平整度小于一定值,只会把突出来的部分敲平
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# 设想方案一
|
||||
核心玩法:
|
||||
武器制作:模拟传统武器制作方式,消耗材料,使用多个步骤打造武器,根据每个步骤的操作获得不同的属性分数,最终决定是做废了,还是品质一般,还是品质优良。武器制作需要配方,并且消耗金钱与材料。
|
||||
配方获得:初期只能制作一些常见武器,在游戏中可以通过各种途径获得新的配方。包括达到一定条件(比如售卖100把普通短剑,可以获得军队短剑配方),逛黑市通过金钱购买。
|
||||
材料获得:普通材料可以市场购买,特殊材料可以由特殊客人获得,或者参加锻刀大赛奖励获得。
|
||||
金钱获得:通过售卖武器与完成订单获得。
|
||||
名气:店里来什么样的客人,由名气决定。名气高了容易出现高级客人,更容易卖出高级武器。一些特殊客人需要名气达到一定程度才会出现。日常经营积累名气,参加比赛可以中等提高名气,打造出传说武器可以大幅提高名气。
|
||||
特殊顾客与专属武器:特殊顾客来店会增加顾客好感度,好感度达到一定程度会要求定制专武,给出传说武器配方。
|
||||
|
||||
对于普通武器,可能研发成本就比较低,对于高级武器,因为需要材料更高级,研发时消耗的素材与金钱更多。因此需要通过经营武器店,批量卖一些走量的武器来获得金钱。比如店内零售,会不断有客人来挑选店里的武器。比如军队大单,会一次性订购数量极大的同样制式武器。这些都是获得金钱的主要方式。
|
||||
|
||||
|
||||
|
||||
蓝图:
|
||||
指明锻造某种刀具必须的材料要求,外形要求,以及锻造过程中必须的步骤与顺序。
|
||||
|
||||
|
||||
原料:
|
||||
高碳钢
|
||||
W2
|
||||
|
||||
尺寸
|
||||
刀长
|
||||
刃长
|
||||
柄长
|
||||
原型
|
||||
欧式撒克逊刀
|
||||
博伊刀
|
||||
日式短刀
|
||||
细节
|
||||
锯齿
|
||||
|
||||
工艺:
|
||||
熔炉加热(软化,需要保持温度范围)
|
||||
铁站敲打(打造基本形状,需要符合设计图)
|
||||
冷热循环
|
||||
粗磨(皮带,磨石)
|
||||
细磨
|
||||
淬火(温度和角度,否则容易裂痕)
|
||||
水淬
|
||||
油淬
|
||||
安装刀柄(鹿角+开洞插入/米卡塔胶纸板+粘合后钻孔螺丝固定/玻璃纤维+螺丝固定)
|
||||
|
||||
|
||||
|
||||
锻刀失败的可能
|
||||
熔炉加热过头,硬化过度,降低强度,刀头容易断。
|
||||
刀掉地了(混入杂质)
|
||||
造型不够
|
||||
应力裂痕
|
||||
|
||||
|
||||
能力:
|
||||
捅刺
|
||||
劈砍
|
||||
强度
|
||||
美观
|
||||
重量
|
||||
平衡
|
||||
|
||||
|
||||
现代设备
|
||||
@@ -0,0 +1,9 @@
|
||||
以我军特等功为原型,还原战场真实场景,比如30人阻击1500人。
|
||||
比如守上甘岭高地,1人去对方阵地打游击多日来获取补给。
|
||||
比如一个人守两个阵地。
|
||||
比如带小队摸到敌方师团指挥部,端掉敌指挥官。
|
||||
战前可以分配技能,只布置战场环境和敌人。由玩家自己想办法获得活着的特等功。
|
||||
如果某一关拿到特等功,但是没有成功撤离,或者活到完成目标。就只能追授。下一关要新给一个角色来玩。
|
||||
如果能够或者拿到特等功,下一关可以继续玩这个角色。
|
||||
整个游戏一共9关,对应我军最强兵王9次特等功。
|
||||
每一关可以对应一次经典的特等功获得方式来设计布置关卡,提供标准玩法,但是也可以通过自己的方法获得特等功。
|
||||
@@ -0,0 +1,49 @@
|
||||
头脑风暴:
|
||||
1.主角:以中国的猫猫车系列为主角 vs 以摩托/三轮摩托/面包/4x4/6x6/8x8/装甲运兵车/坦克为主角
|
||||
2.是否需要有步兵战?
|
||||
3.战车改装。(俺寻思之力)
|
||||
4.乘员升级。
|
||||
5.基地建设升级。
|
||||
6.核心玩法选择:
|
||||
- 吸血鬼幸存者-肉鸽地牢
|
||||
- 重装机兵大地图回合制RPG
|
||||
- helldivers顶视角射击+多人合作
|
||||
- 赤色要塞-顶视角射击+多人合作
|
||||
- xcom-美式掩体战棋
|
||||
- 中东战争-横板清版过关
|
||||
- 无双系
|
||||
7.其他单点元素:
|
||||
- 对局内临时强化(魂斗罗,赤色要塞,合金弹头)
|
||||
- 对局内收集(研究点,装备,基地建设人员)
|
||||
- Boss战
|
||||
|
||||
细化探讨:
|
||||
1.猫猫车vs 各种底盘
|
||||
猫猫车是同一种底盘,在改装的时候就缺少了一个维度,并且以猫猫车为原型的话,武器载重也被限定死了。应该做成多种底盘,猫猫车可以作为其中一种,这样丰富整体多样性,可能做出更多的玩法选择。
|
||||
2.是否需要有步兵战?
|
||||
步兵之后又增加了更多维度是挺不错,但是也提高了成本,分流了游戏的核心,游戏核心是装甲单位。如果步兵单位做得太弱,不能挑战装甲单位,那么会变得鸡肋,需要专门为步兵设计步兵战的场景,如果步兵做的太强,和装甲单位一个水平,那么装甲单位就变得鸡肋。要平衡好需要精细的设计,比较困难。
|
||||
3.是否需要战车改装?
|
||||
需要,战车改装极大增加了可玩性,丰富战术选择,可以正经玩,可以整活,可以自我挑战。整活比如就用摩托+某些极限装备拼搭改造在某些情况下达到甚至超过主战坦克的性能。这样能提供更多探索玩法。
|
||||
4.是否需要乘员升级?
|
||||
可以考虑,但是暂时不用考虑做太深,只要一些简单的系统可以辅助战车,就把乘员系统也看成一个战车改装类型就可以。
|
||||
5.是否需要基地建设?
|
||||
可以考虑,一来,建设类型能极大充实游戏玩法,局内除了打怪之外也多出了很多可以配合的收集元素等。二来,基地建设也可以为游戏局内提供一些装甲之外的额外支援效果。比如飞机轰炸,电子信号压制之类的东西。
|
||||
6.核心玩法选择
|
||||
- 视角:优先考虑顶视角,可以转的类型比较多,幸存者,MM,HD,要塞,xcom这些类型都可以兼容。
|
||||
- 游戏节奏:优先倾向于快节奏对局,大部分情况下尽可能实时,轻操作轻策略,以爽为主。改装合适,战术选择得当,再稍微操作操作就能很爽,类似无双的感觉。
|
||||
- 敌人数量多,但是以杂兵为主。
|
||||
- 提供连击系统或者类似集气系统,清理杂兵就能迅速积攒连击或者能量。然后通过合理运用重火力防止断连,或者造成大片清场效果,或者对敌人精英单位造成重大伤害。
|
||||
- 走位需要灵活,不能是笨重的坦克模式。
|
||||
- 不太需要瞄准,轻武器是自动发射,重武器一般只需要一个大概方向或者大概位置。规避掉斜顶视角瞄准不够精确的问题。
|
||||
- 一场对局中分为几个小阶段,一个阶段清兵完成后,节奏可以转为探索或者做任务。探索或者做任务的奖励可以用到局外,或者对本场后续的阶段有重要辅助作用。
|
||||
|
||||
|
||||
|
||||
迭代一:
|
||||
1.wsad控制载具朝上下左右移动
|
||||
2.按一下shift可以加速5秒
|
||||
3.碰撞到可以碰撞的物体,可以把物体撞飞,并且造成伤害
|
||||
4.自动发射机枪子弹攻击附近的可攻击物体
|
||||
5.按1键,两侧伸出两把大锯子,对碰到的物体造成伤害并且直接切断
|
||||
6.按2键,可以用鼠标瞄准一块区域,点击鼠标左键发射炮弹轰炸区域
|
||||
7.鼠标滚轮可以控制视野大小
|
||||
@@ -0,0 +1,42 @@
|
||||
竞品:《皇帝与社稷》
|
||||
直接扮演皇帝本人,通过皇帝能做的各种事情,来决定帝国的发展。
|
||||
- 皇帝常规活动
|
||||
- 早朝(6点-8点)一个时辰
|
||||
- 听取每日汇报,决定策略
|
||||
- 提出皇帝自己的新方针
|
||||
- 批奏(8点-10点)一个时辰
|
||||
- 了解各地详细情况(受灾/军情/日常/沟通感情)
|
||||
- 召见/学习/娱乐(10点-12点)一个时辰
|
||||
- 私下讨论重要大事
|
||||
- 午饭(12点-1点)半个时辰
|
||||
- 增加后宫好感度
|
||||
- 可以邀请额外官员
|
||||
- 学习与娱乐(1-5点)2个时辰
|
||||
- 提升自身能力
|
||||
- 晚饭(5点-6点)(半个时辰)
|
||||
- 娱乐/批奏/召见(6-8点)1个时辰
|
||||
- 翻牌/娱乐/召见/批奏(8点-10点)
|
||||
- 睡觉
|
||||
- 皇帝特殊活动
|
||||
- 祭祀(占用1日或多日)
|
||||
- 打猎(占用1日或多日)
|
||||
- 出巡(占用1日或多日)
|
||||
- 御驾亲征(占用1日或多日)
|
||||
- 皇嗣培养
|
||||
- 科举
|
||||
- 后宫选秀
|
||||
|
||||
- 无耗时活动
|
||||
- 官员任免(外官/京官/内廷官)
|
||||
- 查看疆域地图(经济/军事/政治/事件)
|
||||
- 兴建宫殿(决策/事件)
|
||||
- 赈灾(决策/事件)
|
||||
- 反腐(决策/事件)
|
||||
|
||||
- 可以动用的资源
|
||||
- 国库银钱(税收)
|
||||
- 兵力
|
||||
- 武器
|
||||
- 粮草
|
||||
- 精力(身体状况)
|
||||
- 关系(好感度)
|
||||
@@ -0,0 +1,2 @@
|
||||
既然紫色不好染,古人能不能用红线做经线,蓝线做纬线,纺织出紫色的布料? - 祥昊的回答 - 知乎
|
||||
https://www.zhihu.com/question/1918724078870717869/answer/1919185731001226765
|
||||
@@ -0,0 +1,8 @@
|
||||
扮演连队指挥官,布置战术,指挥连队完成一个又一个艰巨的人物,重现抗美援朝经典战斗,获得英雄连称号。
|
||||
玩法大概是几个不同任务关卡,每个关卡前,可以有一段时间进行布置。可以由玩家进行战术安排。
|
||||
比如未进场前,可以进行战术讲解(提前预设战术),装备保养(提升buff),队员任务(解锁隐藏技能)。
|
||||
进场后,开战前,可以修整工事(挖战壕,布设火力点),可以前出探查获取情报,可以收拾战场(获取额外资源)
|
||||
战斗中,可以随时调整人员战术(预备队增援,人员调配,安排后方有限重火力),可以以每个小分队为单位,释放技能。
|
||||
战后,根据战场情况,如果自己所在小分队死亡人数越多,获得的经验越多,升级越快(以弥补高等级队员死亡造成的战力损失),只要小队没有全灭,那么就可以指定之前团队已经领悟的技能,同时会补充新兵员。
|
||||
最后一关会根据之前的伤亡情况,决定进入不同的战场,如果人员保存较好,则进入高难度主攻战斗(集体一等功),如果人员保存不太好,则进入辅助进攻战斗(集体二等功)
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
# 开发准备
|
||||
[[30.资源/32-技术积累/UE引擎/TS开发/索引:从零开始搭建UE开发框架]]
|
||||
# 策划准备
|
||||
|
||||
|
||||
|
||||
# 美术准备
|
||||
|
||||
以大名王朝为背景。以种田建造为基础,通过NPC与剧情杂糅进各种游戏的元素。
|
||||
使用chatgpt丰富交互。
|
||||
可以扮演普通人(星露谷物语,环世界,牧场物语)
|
||||
可以扮演商人(大航海时代,东印度公司)
|
||||
可以扮演官员(县,府,州管理。纪元1440,海岛大亨)
|
||||
可以扮演皇帝(决定国策,派系斗争,官员任免,卡牌)
|
||||
可以扮演将军(战场战斗)
|
||||
DLC加入外星人势力,穿越者示例,克苏鲁势力,机械势力,修仙,丧尸,核末日(类似群星)
|
||||
|
||||
|
||||
功能实现步骤:
|
||||
1.顶视角 Demo自带
|
||||
2.移动 (WSAD)
|
||||
3.交互(说话,掉东西,改变状态)
|
||||
4.背包
|
||||
5.挖掘与破坏
|
||||
6.配方-工具-建造
|
||||
7.随机地图生成
|
||||
8.建筑升级
|
||||
|
||||
|
||||
|
||||
|
||||
研究内容:
|
||||
明代服饰
|
||||
绣罗衣裳照暮春
|
||||
显微镜下的大明
|
||||
明代建筑
|
||||
明代官制
|
||||
明代士农工商设施
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
|
||||
# 有没有那种介绍现代社会科学技术门类的书?就是整理总结现代社会的科技树及依赖关系?
|
||||
我理解你想要的这种书!——**那种能够像游戏科技树一样,清晰展示现代科技各个门类、它们之间的关系以及发展路径的图谱式书籍**。这种需求非常合理,但确实存在一些挑战:
|
||||
|
||||
1. **科技发展日新月异:** 现代科技更新迭代速度极快,一本书从写作到出版,部分内容可能已经过时或有了新进展。
|
||||
2. **跨学科交叉融合:** 当代重大突破往往发生在学科交叉点上(如生物信息学、纳米电子学),依赖关系是复杂的网状结构,而非简单的线性树状结构。
|
||||
3. **视角与深度难以兼顾:** 既要全面覆盖又要深入解析具体技术的依赖关系,篇幅和可读性是个大问题。
|
||||
4. **依赖关系的动态性:** 一项技术可能最初依赖A,但随着发展,可能转而依赖B,或者催生C,关系是动态演化的。
|
||||
|
||||
**因此,很难找到一本完全符合你想象的、包罗万象且实时更新的“现代科技树百科全书”。** 但别灰心!**以下是一些接近你需求的书籍类型和具体推荐,以及一些替代方案:**
|
||||
|
||||
## 📚 最接近需求的书籍类型与推荐
|
||||
|
||||
1. **综合性科技通史/科技与社会发展史:**
|
||||
* **特点:** 这类书从历史脉络梳理科技发展,自然会展现不同技术出现的先后顺序、背景和相互影响(即依赖关系)。虽然不是严格按“树状图”呈现,但逻辑链条清晰。
|
||||
* **推荐:**
|
||||
* **《世界科学技术通史》(第三版) - 詹姆斯·E·麦克莱伦第三 / 哈罗德·多恩:** 经典之作,覆盖范围广,时间跨度大,能清晰看到不同时代主要技术及其承前启后的关系。
|
||||
* **《技术的本质》 - 布莱恩·阿瑟:** 更侧重于从哲学和经济学角度理解技术如何进化、组合和创新。它深刻阐述了技术模块化、组合进化的特点,对于理解技术之间的依赖和组合关系非常有启发性。**强烈推荐!**
|
||||
* **《创新的起源》 - 马特·里德利:** 探讨了多个重要领域(能源、公共卫生、交通、计算等)创新的历史进程,展现了技术是如何一步步迭代、组合发展而来的。
|
||||
|
||||
2. **面向未来的科技趋势综述/预测类:**
|
||||
* **特点:** 这类书通常由前沿科学家、未来学家或科技媒体撰写,会梳理当下最热门的、可能塑造未来的关键技术领域及其相互关系,更具时效性。
|
||||
* **推荐:**
|
||||
* **《未来产业》 - 埃米·韦伯:** 作者是未来研究所负责人,书中梳理了塑造未来的关键科技(生物、材料、计算等)及其交叉融合带来的影响,对理解当前科技前沿的依赖和融合很有帮助。
|
||||
* **《MIT科技评论》年度“十大突破性技术”合辑或相关书籍:** 《麻省理工科技评论》每年会评选并深度解读十项最具突破性的技术。阅读几年的合集,可以清晰看到技术热点的变迁、技术之间的关联(如AI如何赋能生物、材料等领域)。虽然不是严格的“树”,但能看到关键节点和联系。
|
||||
* **《科技想要什么》 - 凯文·凯利:** KK的经典著作,探讨科技作为一个整体的演进趋势和规律,有助于理解技术发展的内在逻辑和相互依存性。
|
||||
|
||||
3. **特定领域的“技术全景图”或“技术路线图”:**
|
||||
* **特点:** 这类书籍或报告往往聚焦于某个特定领域(如人工智能、半导体、生物技术、可再生能源),深入剖析该领域内的技术分支、核心挑战、发展路径和依赖关系。更微观、更具体。
|
||||
* **寻找途径:**
|
||||
* **行业协会/研究机构报告:** 例如,半导体行业协会(SIA)的路线图、各能源机构发布的清洁能源技术路线图、人工智能相关学会发布的报告等。这些通常是PDF文档而非正式出版的书籍。
|
||||
* **特定领域的综述性书籍:** 如:
|
||||
* **《人工智能:一种现代的方法》 - Stuart Russell / Peter Norvig:** AI领域的圣经,虽然偏教材,但其章节安排和内容覆盖本身就体现了AI各子领域的知识结构和依赖。
|
||||
* 针对量子计算、基因编辑、电池技术等热门领域的深度科普或技术综述书籍(需要具体搜索)。
|
||||
|
||||
4. **图解式科技百科/手册:**
|
||||
* **特点:** 通过大量图表、图解来直观展示科技原理和应用,有些会尝试描绘技术之间的联系。
|
||||
* **推荐:**
|
||||
* **《How Technology Works》 - DK出版社:** DK的图解系列向来优秀,这本书用丰富的插图解释了从芯片到火箭等各种现代技术的原理,虽然没有明确的“依赖树”,但通过解释技术构成,间接体现了依赖关系(例如,手机依赖芯片、通信、电池等技术)。
|
||||
* **《The Way Things Work Now》 - David Macaulay:** 经典科普书的更新版,以幽默的图画和猛犸象的故事讲解科技原理,覆盖广泛,同样能帮助理解技术构成和基础依赖。
|
||||
|
||||
## 🌐 替代方案和补充资源
|
||||
|
||||
1. **在线知识库与可视化工具:**
|
||||
* **维基百科:** 利用好维基百科的“参见”、“分类”以及技术条目的“背景”、“历史”、“应用”部分,可以手动挖掘出大量的技术关联。从一个技术条目出发,顺着链接探索,是构建个人理解的“科技树”的有效方式。
|
||||
* **专业知识图谱/科技情报平台:** 如 **Crunchbase, PatSnap, Lens.org** 等(部分需付费)。这些平台利用大数据分析专利、论文、公司等信息,可以可视化地展示技术领域、公司、研究机构之间的关系网络,部分功能能揭示技术领域的关联性。
|
||||
* **科技媒体/博客:** 如 **Ars Technica, IEEE Spectrum, Wired, TechCrunch, 36氪, 品玩** 等。这些媒体经常有深度分析文章,探讨某项技术的发展、瓶颈以及它与其他技术的关系。
|
||||
|
||||
2. **大学公开课/MOOC:**
|
||||
* Coursera, edX, Udacity 等平台上有大量科技领域的导论课、交叉学科课程(如生物信息学、计算材料学)。这些课程在讲解核心知识时,通常会介绍其依赖的基础学科和技术背景。
|
||||
|
||||
3. **技术路线图:**
|
||||
* 搜索 “特定领域 + 技术路线图” (Technology Roadmap)。许多政府机构(如美国能源部DOE)、研究机构(如IMEC - 半导体)、国际组织(如IEA - 能源)都会发布特定领域的技术发展路线图,清晰地描绘了关键技术的现状、目标、挑战和发展路径(包含依赖关系)。
|
||||
|
||||
## 📌 给你的建议
|
||||
|
||||
1. **从“面”到“点”:** 建议先读一本好的**综合性科技通史**(如《技术的本质》或《世界科学技术通史》)建立宏观框架和历史脉络感。然后阅读一本**前沿趋势综述**(如《未来产业》)了解当下热点及其联系。有了这个基础,再针对你感兴趣的**特定领域**(如AI、生物医药、能源)寻找该领域的深度书籍、技术路线图或权威报告,深入理解其内部的分支和依赖。
|
||||
2. **善用在线资源:** 把**维基百科**作为探索工具,把**优质科技媒体**作为获取最新动态和深度分析的来源。
|
||||
3. **接受不完美:** 理解没有一本“完美”的书能完全满足你静态、全景、实时更新的“科技树”需求。科技本身是动态、复杂、相互交织的网络。重要的是通过多种资源,**构建你自己的、动态发展的科技认知框架**。💡
|
||||
4. **关注交叉点:** 重大突破往往在交叉领域。阅读涉及**生物+信息、材料+能源、计算+一切**等交叉主题的书籍和文章,最能体会到技术的依赖和融合。
|
||||
|
||||
**寻找这样的书本身就像在探索一片不断生长的知识森林,没有固定的地图,但每一次翻阅和链接,都在帮你描绘出属于自己的科技版图。** 希望这些建议能帮你找到通往那片森林的路径!
|
||||
@@ -0,0 +1,8 @@
|
||||
# 边三轮
|
||||
https://zhuanlan.zhihu.com/p/335786681
|
||||

|
||||
|
||||

|
||||

|
||||
# 三轮棚车
|
||||
http://www.sdhongdi.cn/products_details/22.html
|
||||
@@ -0,0 +1,25 @@
|
||||
基础:
|
||||
1.Topdown视角
|
||||
2.战车为主角
|
||||
3.走位灵活,爽快割草
|
||||
4.战车改装
|
||||
5.低多边形风格
|
||||
待探索:
|
||||
1.通关目标
|
||||
完成一套主线剧情?
|
||||
通关设计好的固定关卡?
|
||||
重复游玩并解锁所有战车?
|
||||
2.单局长度
|
||||
大世界沙盒探索?
|
||||
单局小场景?
|
||||
3.战车/场景/角色风格?
|
||||
碎石沙漠?
|
||||
广阔平原?
|
||||
岩浆地狱?
|
||||
极地冻土?
|
||||
城市废墟?
|
||||
可选:
|
||||
1.可以承载多名乘员,乘员拥有特性,可以升级
|
||||
2.物资收集,基地建设
|
||||
3.局内任务(救人,送快递,摧毁xx目标等)
|
||||
4.额外技能(基地支援,关卡特性技能,额外系统如集气大招或者连击大招)
|
||||
@@ -0,0 +1,16 @@
|
||||
目标:
|
||||
搭建最基本的游戏对局操作。
|
||||
需求:
|
||||
- 顶视角相机,跟随主角战车
|
||||
- wsad控制载具上下左右移动,直接转向,无转弯半径限制。
|
||||
- 按shift加速,暂定速度翻倍
|
||||
- 碰撞到可以碰撞的物体或者敌人,可以把目标撞飞/推走,或者被撞停,撞击造成伤害
|
||||
- 质量比超过3:1,撞飞目标,击飞速度为撞击速度1.2倍。被冲击方收到每100冲量1点伤害。
|
||||
- 质量比超过1:1,撞飞目标,即撞击方减速一半,被冲击方是减速后速度1.5倍。被冲击方收到每200冲量1点伤害。
|
||||
- 质量比超过1:3,推动目标,被冲击放按冲量获得速度,撞击方降速到和被冲击方一致。撞击方收到每400冲量1点伤害,被冲击方收到每100冲量1点伤害。
|
||||
- 质量比小于1:3,撞击方直接被截停。撞击方收到每400冲量1点伤害。
|
||||
- 被击飞时,纵向速度为横向速度一半。
|
||||
4.自动发射机枪子弹攻击附近的可攻击物体
|
||||
5.按1键,两侧伸出两把大锯子,对碰到的物体造成伤害并且直接切断
|
||||
6.按2键,可以用鼠标瞄准一块区域,点击鼠标左键发射炮弹轰炸区域
|
||||
7.鼠标滚轮可以控制视野大小
|
||||
@@ -0,0 +1,8 @@
|
||||
|
||||
| 日期 | 实现功能 | 用时 | 遇到问题 |
|
||||
| -------- | --------------- | --- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 20250422 | 与小怪的碰撞击飞逻辑 | 1.5 | 1.蓝图接口中定义的函数如果没有返回值,会在派生类中以事件的形式存在,可以添加一个bool返回值来规避。<br>2.模拟击飞的时候遇到问题,如果不用模拟方式,角色的CharacterMovement组件需要持续的Input输入,并且不能是走路模式,最终这种方式没有试成功。暂时使用打开模拟物理,添加冲量速度来解决,但是效果不理想,<br>落地很慢<br>落地之后还没有恢复到非物理模拟状态。 |
|
||||
| 20250427 | 调整碰撞击飞逻辑,调整镜头距离 | 1.5 | 经验:模拟击飞可以不用物理,给Movement设置最大速度和当前速度,然后设置Jump,使用跳跃行为来模拟击飞,然后在update中判断落地之后恢复最大速度。<br>2.使用Overlap形式触发碰撞之后,如果是被截停这种处理,需要考虑如何解决连续碰撞问题。 |
|
||||
| 20250428 | 调整碰撞击飞效果 | 2 | 1.使用跳跃模拟击飞的效果不好,跳跃的时候飞的慢,并且越大的物体飞得越慢,达不到想要的迅速飞出去落地的效果。<br>2.目标调整为使用击飞动画+RootMotion处理击飞。<br>3.制作了UE5角色到兵人的动画重定向资产,方便导出UE5角色动画给兵人。 |
|
||||
| 20250521 | 调整动画重定向 | 4 | 1.AI制作3D人物导入并制作动画重定向。<br>2.从mixamo上下载动作资源。<br>3.下载的动作RootMotion不符合需求,待研究如何调整。 |
|
||||
| | | | |
|
||||
@@ -0,0 +1,138 @@
|
||||
# **准备工作**
|
||||
- 准备角色SK的FBX
|
||||
- 导入UE后,默认会生成3个资产
|
||||
- 骨骼网格体
|
||||
- 骨骼
|
||||
- 物理资产
|
||||
- 基础闲置(Idle)动画的FBX,导入UE
|
||||
- 基础运动(Run/Walk)动画的FBX,导入UE
|
||||
---
|
||||
# **新建资产**
|
||||
|
||||
## **手动创建新物理资产**
|
||||
导入SK时一般会自动生成物理资产,有的时候根据需求可能需要创建多个物理资产,或者是对自动创建的资产不满意,可以自己手动创建资产,操作方法如下:
|
||||
- 找到骨骼网格体资产,点击右键
|
||||
- 菜单中选择创建->物理资产->创建 或者创建并指定。
|
||||
- 创建并指定会在创建一个新的物理资产后,将骨骼网格体中的默认物理资产指定为新创建的物理资产
|
||||

|
||||
- 在弹出的创建窗口使用默认设置,点击创建资产按钮,资产创建完成。
|
||||
- 如果想变更SK中默认的资产,打开SK编辑器界面,在右下角资产详情界面设置。
|
||||

|
||||
|
||||
## **物理资产界面**
|
||||
双击角色物理资产,打开物理资产编辑器,基本界面功能区如下:
|
||||

|
||||
3. **左上角骨骼树窗口**
|
||||
以树形结构展示人物骨骼和刚体条目
|
||||
4. **左下角图表窗口**
|
||||
以图表结构展示与当前选中的骨骼/刚体相关的约束条目
|
||||
5. **中间3D视口**
|
||||
展示3D预览效果,视口顶端有一个角色按钮组,可以设置刚体/约束/骨骼在3D场景中的绘制方法,方便调试
|
||||
6. **顶上工具栏**
|
||||
有几个按钮比较常用:
|
||||
- 启用碰撞/禁用碰撞。定义哪些刚体之间应该计算碰撞。
|
||||
- 模拟,编辑物理效果之后在当前窗口模拟效果,可以整体模拟也可以选择部分刚体链条进行模拟。
|
||||
7. **右侧细节窗口**
|
||||
用于调整当前选中的刚体/约束细节参数
|
||||
8. **右侧预览窗口**
|
||||
用于设置预览角色的动作。
|
||||
|
||||
---
|
||||
## **创建刚体形体**
|
||||
### **删除自动创建的形体**
|
||||
创建资产时自动创建的形体如果过于杂乱不好处理,可以直接全部删掉再重新手动生成,删除操作步骤如下:
|
||||
1. 在骨骼树窗口中点击齿轮
|
||||
2. 确保下拉框中物理资产过滤器组中选中显示形体相关的三个勾选项。
|
||||
3. 骨骼选项暂时选中隐藏骨骼,此时列表中只显示了刚体形体
|
||||
4. 在树形结构中Ctrl+A全选,然后Delete删除所有形体。
|
||||

|
||||
|
||||
### 添加身体形体
|
||||
删除自动生成的形体之后,可以为骨骼手动生成形体:
|
||||
1. **创建形体**
|
||||
- 在骨骼树窗口中点击齿轮,选择显示所有骨骼
|
||||
- 选中需要生成形体的骨骼节点,一般选择如下节点
|
||||

|
||||

|
||||
- 右键,菜单中选择添加替换形体,会在列表中生成形体组件
|
||||

|
||||
- 在选中的骨骼下方会生成一个同名的形体节点
|
||||

|
||||
2. **调整形体基础形状**
|
||||
依次选中各个形体组件,在中间的3D预览窗口中按W调整位置,E调整旋转,R调整缩放。使形体的胶囊体基本与身体部位保持覆盖重合,最终效果如下:
|
||||

|
||||
为了方便调整,可以调整以下的视口设置:
|
||||
- 在角色按钮组下拉框中的设置形体进行绘制方法,选择线框模式方便查看单个形体和身体模型的重合情况,选择固体方便查看整体覆盖效果。
|
||||

|
||||
3. **将身体节点设置为运动学节点**
|
||||
身体部分主要用于与飘带进行碰撞计算,本身不需要物理模拟,选中所有的身体形体节点,在细节面板中设置为运动学。
|
||||

|
||||
### **添加飘带形体**
|
||||
与创建身体形体方式一样,为飘带创建需要的形体,并调整大小位置包裹飘带模型。
|
||||
设置节点类型时与身体节点不同,飘带形体需要用物理模拟,在细节面板中设置物理类型为模拟。
|
||||
### **调整形体细节参数**
|
||||
运动学形体基本上不需要调整额外的细节参数,模拟形体需要进一步设置细节参数,以取得预期的物理模拟效果,主要设置以下内容:
|
||||
|
||||
**质量+启用重力**
|
||||
用于模拟重力效果,勾选质量,勾选启用重力
|
||||

|
||||
|
||||
**相对质量比值**
|
||||
质量的绝对值没有太大影响,但是一个链条上的**相对质量比值**很重要,官方推荐的一般做法是**一个链条上所有的子节点加起来质量不能超过父节点的质量**,一般都是按父节点:子节点 为2:1的比例设置。如下图:
|
||||

|
||||
如果子节点质量过大会导致链条整体下坠。
|
||||
|
||||
**线性阻尼**
|
||||
用来模拟线性运动减速效果,值越大,线性运动会越快停止,值太小,飘带会来回晃荡,很难停止下来。**根据经验这个值一般在8-16左右效果比较合适。**
|
||||
|
||||
**角阻尼**
|
||||
用来模拟旋转运动减速效果,值越大,旋转运动会越快停止,**根据经验这个值一般在8-32左右效果比较合适。**
|
||||

|
||||
可以先批量为形体设置这两个值,后面调试效果细节的时候再根据表现调整。
|
||||
|
||||
**惯性张量**
|
||||
**惯性张量**:表示物体是否容易从静止状态运动起来,这个值越大,物体在较小的力度小越不容易动起来,或者说越容易保持稳定。默认值为1,一般先不做调整,调试效果时如果遇到问题,可以适当调整,**根据经验范围一般在1-1.2之间比较合适。**
|
||||
|
||||
到这里,形体的基础设置就完成了,但是此时如果直接模拟,形体会直接掉到地下去,因为我们没有为形体之间设置约束。
|
||||
### 设置约束
|
||||
一般来说,父节点和子节点之间需要有约束,否则子节点会直接掉下去。一个链条的根部必须约束到一个运动学形体上,否则整根链条都会掉下去。
|
||||
**查看约束**
|
||||
在骨骼树中选中形体,左下角图标窗口会展示与这个形体有关的约束,以及与约束相关的对象。
|
||||
约束命名为**子节点名称:父节点名称**
|
||||

|
||||
在图标界面中选中约束,细节面板会展示这个约束的细节。
|
||||
|
||||
**添加约束**
|
||||
先选中约束的子形体对象,再ctrl选中约束的父形体对象,右键->约束选定形体。就会为这一对形体生成一个约束。
|
||||
注意:约束的父子关系与树结构中的父子关系无关,可以给骨骼树中两个不同链条中的形体创建约束。
|
||||
注意2:如果选择大于两个形体进行操作,只会为第一个形体和最后一个形体生成一个约束,因此需要一对一对创建。
|
||||

|
||||
|
||||
**限制约束活动范围**
|
||||
选中创建的约束,在细节面板中将Angular Limits下的摆动1摆动2和扭曲运动设置为受限。
|
||||

|
||||
约束活动范围会非常明显的影响计算结果,绝大多数情况都应该给设置受限,并且给出一个合适的限度。比如同样的其他设置,约束不做限制,计算出来长链条就会出现预料之外的扭曲。后面调试效果细节的步骤会详细描述如何设置。
|
||||
**模拟查看效果**
|
||||
约束设置完成之后,可以在工具栏顶条点击模拟,查看基础效果,此时需要模拟的飘带应该能自然垂下并很快稳定,如果不能自然垂下,参考后面调试效果细节的步骤进行参数检查和调试。
|
||||
### 设置刚体碰撞
|
||||
经过前面步骤的设置,现在受重力影响的基本飘带效果已经有了,但是还会和身体穿插,需要为飘带和身体设置碰撞关系。
|
||||
- 在3D视口顶部的角色按钮组中,将形体设置为全部绘制,方便选择与查看
|
||||

|
||||
- 在3D视口或者骨骼树中选中某个形体后,按ctrl选中希望与这个形体发生碰撞的其他形体,点击顶条上的**启用碰撞**按钮
|
||||
- 观察3D视口碰撞关系,被选中的形体显示为蓝色,未被选中的形体显示为灰色,能够与被选中形体发生碰撞的形体显示为紫色。
|
||||

|
||||
- 如果发现设置错了,选中第一个形体和不希望碰撞的形体,点击**禁用碰撞**即可。
|
||||
- 依次执行以上步骤,直到所有希望能发生碰撞的形体都设置完毕。
|
||||
## 预览效果
|
||||
**设置角色预览姿势**
|
||||
在TPose下很多飘带自然垂下的时候本身就不和身体发生碰撞,首先需要将人物设置成idle姿势进行预览,idle姿势本身比较稳定,也是玩家最常见到的姿势,以这个姿势来调整效果能达到最好的效果。
|
||||
右侧窗口切换到预览场景设置,预览控制器选择**使用特定动画**,动画选择battleidle动作
|
||||

|
||||
选择后在3D视口底部会出现一个播放进度条,可以点击首帧并停止在首帧上。
|
||||

|
||||
角色飘带应该自然垂下,与身体碰撞的地方应该会自动分开,没有明显的穿插。
|
||||
基础设置完成,接下来可以调整细节,来解决一些局部错误或者让效果更自然。
|
||||
|
||||
调试方法
|
||||
无碰撞时不能自然垂下
|
||||
无法稳定,一直抖动
|
||||
@@ -0,0 +1,63 @@
|
||||
# 基本功能
|
||||
RBAN是UE4.27开始加入的Chaos物理系统中的一个子系统,主要功能是在游戏中进行刚体链的实时计算,支持以下功能:
|
||||
- 将世界对象加入模拟
|
||||
- 可以将附近的世界物体当作一个物体(静态)添加到当前物理模拟系统中
|
||||
- 添加附近的动态物体到当前物理模拟系统中
|
||||
- 当物体远离的时候移除这些世界物体
|
||||
- 对世界对象物体进行组件空间和骨骼空间的模拟(不受角色在世界坐标中的移动影响)。
|
||||
- 在RBAN空间进行运动模拟
|
||||
- 本地空间模拟包括组件空间和骨骼空间级别的物理模拟,在本地空间模拟不会计算角色在世界空间中的任何物理运动,可以防止一些不真实的角色移动对物理模拟造成预期外的影响,但是同时也让物理模拟完全无法对角色的运动做出响应。
|
||||
- 在RBAN空间进行模拟,能够将一些可控的角色世界空间运动(比如移动和旋转)拿来用,使得开发者可以让本地RBAN模拟响应角色的移动,并且能够减少或者限制一些不真实运动带来的影响,比如突然旋转和极端加速。
|
||||
- RBAN空间模拟支持完整的线性和角运动传递,包括科里奥利力,离心力和欧拉力,并且可以在RBAN世界空间模拟和本地空间模拟之间进行平滑融合
|
||||
# 基础使用方法
|
||||
创建物理资产
|
||||
1.创建身体刚体(胶囊体)
|
||||
- 尽可能正好包裹身体
|
||||
- 物理类型设置成Kinematic
|
||||
2.创建飘带刚体(胶囊体)
|
||||
- 尽可能正好包裹飘带
|
||||
- 物理类型设置成Simulated
|
||||
- 设置重力-所有子节点重力和不要超过父节点(100-50-25),让链条保持头部稳重尾部轻盈的效果
|
||||
- 设置角度阻尼用来缓和突变的旋转效果(经验值10-50之间)
|
||||
- 设置线性阻尼(4-16)与惯性张量(1.2-1.5),使晃动不会太轻飘
|
||||
3.为飘带刚体添加约束
|
||||
- 选中刚体,右键约束为链条前后两个节点添加约束,不然模拟时下段会直接掉下去。
|
||||
4.设置约束
|
||||
- 选中约束,将约束上的swing 1,swing 2,twist 旋转设置为limited,值可以先用默认的45,这样在模拟的过程中不会出现过大的转动和摆动
|
||||
- 如果摆动效果不太稳定,在Angular Motor下面勾选添加Slerp并设置一些强度辅助稳定
|
||||
5.设置飘带与身体的碰撞
|
||||
- 显示全部刚体,选中飘带的某一个刚体,如果有其他刚体跟着一起变成蓝色,说明他们之间会计算碰撞。
|
||||
- 选中某一个刚体,再选中需要计算碰撞的刚体,点击编辑器上方快捷工具里面的Enable Collision。为这一组物体添加物理碰撞计算。
|
||||
为SK设置物理资产
|
||||
创建动画蓝图
|
||||
将SK的post process animation设置为这个蓝图即可在播放动画时预览物理效果,或者在编辑物理效果的时候播放动画
|
||||
# 效果进阶
|
||||
质心调整
|
||||
1.拆分多个物理数据来处理不同的物理部分
|
||||
2.抖动问题
|
||||

|
||||

|
||||

|
||||
快速移动问题
|
||||

|
||||

|
||||
其他优化
|
||||

|
||||

|
||||

|
||||
结合动画中的运动和RBAN
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# 参考资料
|
||||
https://dev.epicgames.com/documentation/en-us/unreal-engine/chaos-physics-overview?application_version=4.27
|
||||
https://historia.co.jp/archives/37450/
|
||||
https://unrealengine.hatenablog.com/entry/2022/10/31/200107
|
||||
https://dev.epicgames.com/community/learning/tutorials/dLxx/unreal-engine-rban-echo-ponytail-tutorial
|
||||
https://dev.epicgames.com/documentation/en-us/unreal-engine/physics-in-unreal-engine?application_version=5.0
|
||||
@@ -0,0 +1,5 @@
|
||||
- 角色刚体链物理动画
|
||||
- 基础物理资产制作
|
||||
- 角色位移与运动影响
|
||||
- 额外外力影响
|
||||
- 结合动画共同表现精细效果
|
||||
@@ -0,0 +1,30 @@
|
||||
# 技术概览
|
||||

|
||||
# 体素化
|
||||
生成简化的碰撞路径。
|
||||
把一堆乱七八糟的多边形,转换成一个一个格子,过滤掉高频细节。
|
||||
两个模型中间有一点缝隙,这个缝隙能不能通过,可以用体素化来处理。
|
||||
体素也可以单独用来寻路
|
||||
# 凸多边形化
|
||||
这个研究主要讨论凸多边形化对寻路算法的作用
|
||||
- 凸多边形内部不需要寻路
|
||||
- 只需要研究凸多边形之间寻路
|
||||
- 如何生成凸多边形?
|
||||
- 凸多边形定义:对于多边形内部或边界上的任意两点P和Q,连接P和Q的线段完全包含在该多边形内部或边界上。
|
||||
- 从大于180度的内角所在的点朝多边形内部一个可见的点相连,将凸多边形切分成两个,从而干掉这个>180的内角。
|
||||
- 判断角>180,角所在两个向量叉乘
|
||||
- 判断两个点是否可见:
|
||||
- 连出来的线不和多边形的边相交
|
||||
- 连线是否在内部
|
||||
- 有洞拆成无洞,在洞上连一条线到角
|
||||
- earcliping耳切法,先切成三角形,再合并乘凸多边形。
|
||||
- 寻路时,走凸多边形的边的中点。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# UE入口
|
||||
FRecastTileGenerator::GenerateCompressedLayers
|
||||
@@ -0,0 +1,29 @@
|
||||
# 准备
|
||||
下载UE PCG官方示例ElectricDreamsEnv项目
|
||||
https://www.unrealengine.com/zh-CN/electric-dreams-environment
|
||||
|
||||
|
||||
# 基础图表节点
|
||||
### 获取数据
|
||||
Get Landscape Data
|
||||
|
||||
### 点采样器
|
||||
Surface Sampler
|
||||
Get Points Grid
|
||||
### 过滤器
|
||||
Desity Filter
|
||||
Difference
|
||||
### 生成器
|
||||
Static Mesh Spawner
|
||||
### 修改器
|
||||
Transform Points(变换点)
|
||||
Spatial Noise
|
||||
Bounds Modifier
|
||||
Projection
|
||||
Attribute Noise
|
||||
Distance
|
||||
AttributeRemap
|
||||
### 数据缓存
|
||||
Add Named Reroute
|
||||
|
||||
### 通用蓝图
|
||||
@@ -0,0 +1,20 @@
|
||||
# 道路涉及的元素
|
||||

|
||||
# 道路的分类
|
||||

|
||||
# 程序道路生成的关键问题
|
||||
### 1.路口衔接
|
||||
- **匝道口**
|
||||
- **丁字/十字路口**
|
||||
- **转盘路口**
|
||||
### 2.路径选择
|
||||
- **平地**
|
||||
- 直线
|
||||
- 山地
|
||||
- 等高线盘山道
|
||||
- 之字盘山道
|
||||
- 圆形螺线隧道+ 高架桥
|
||||
### 3.路面生成方式
|
||||
- 使用原始地形抹平+铺设细节
|
||||
- 适用于原始道路如泥土路,石子路。
|
||||
-
|
||||
@@ -0,0 +1,104 @@
|
||||
# 安装UE5.5
|
||||
通过EpicLauncher安装虚幻5发布版引擎,或者从github上下载源码版
|
||||
# 安装IDE
|
||||
## 安装VS2022
|
||||
需要安装C++桌面开发,C#桌面开发,游戏C++开发模块
|
||||
## 安装NodeJS
|
||||
## 安装VisualStudioCode
|
||||
# 新建UE5工程
|
||||
新建一个UE5游戏工程(C++项目)
|
||||
# 安装Puerts插件
|
||||
## 下载插件
|
||||
从 https://github.com/Tencent/puerts 下载master分支最新源码(当前最新发布版还无法兼容5.5)
|
||||
从 https://github.com/puerts/ReactUMG 下载master分支最新源码
|
||||
## 安装编译
|
||||
在UE5游戏工程目录中新建Plugins目录,将Puerts插件目录放进去
|
||||
|
||||
在工程UProject文件右键,生成visualstudio工程
|
||||
|
||||
如果是win11家庭版,安装组策略管理器
|
||||
https://cloud.tencent.com/developer/article/2405006
|
||||
关闭路径长度限制
|
||||
https://blog.csdn.net/ZxqSoftWare/article/details/108519131
|
||||
|
||||
vs2022 打开sln
|
||||
临时修改部分插件代码(最新版也有报错),然后编译
|
||||
- Plugins/Puerts/Source/CSharpParamDefaultValueMetas/CSharpParamDefaultValueMetas.ubtplugin.csproj 中修改.net6.0为.net8.0
|
||||
- 去掉UE5.5和以下相关的宏,保证UE5.5的代码执行到。主要是两处
|
||||
- 1.使用Session.Modules的地方。
|
||||
- 2.PropertyTranslator.h declarationGenerator.cpp 中#include "Engine/UserDefinedStruct.h" 替换为#include "StructUtils/UserDefinedStruct.h"
|
||||
|
||||
编译工程
|
||||
# 初始化TS环境
|
||||
## 生成TS工程
|
||||
cmd进入项目Plugins/Puerts目录,输入命令:
|
||||
```
|
||||
node enable_puerts_module.js
|
||||
```
|
||||
该命令作用:
|
||||
1.将Puerts下的Content/Javascript内容拷贝到工程目录的Content下
|
||||
2.在项目根目录创建并初始化tsconfig.json文件
|
||||
3.创建并初始化DefaultPuerts.ini到项目目录Config下
|
||||
4.在项目根目录创建TypeScript目录
|
||||
5.npm 安装Puerts_Editor的依赖包
|
||||
## 配置开发环境
|
||||
cmd进入工程根目录,输入命令```npm init``` 创建package.json,并加入依赖项
|
||||
```
|
||||
"dependencies":{
|
||||
|
||||
"@types/react":"^15.6.6",
|
||||
|
||||
"@types/react-reconciler":"^0.18.0"
|
||||
|
||||
}
|
||||
```
|
||||
在工程目录npm install 安装依赖项
|
||||
|
||||
进入Content/Javascript 目录,输入 ```npm init``` 创建package.json,并加入依赖项
|
||||
```
|
||||
"dependencies": {
|
||||
|
||||
"react":"^16.11.0",
|
||||
|
||||
"react-reconciler":"^0.23.0"
|
||||
|
||||
}
|
||||
```
|
||||
在工程目录npm install 安装依赖项
|
||||
|
||||
打开工程根目录的tsconfig.json,在typeRoots中加入 "Plugins/ReactUMG/Typing"
|
||||
## 创建JS虚拟机
|
||||
在游戏工程中新建UGameInstance的派生类。重写OnStart和Shutdown方法,创建和销毁JS虚拟机
|
||||
``` C++
|
||||
#include "MingGameInstance.h"
|
||||
|
||||
void UMingGameInstance::Init()
|
||||
{
|
||||
Super::Init();
|
||||
}
|
||||
|
||||
void UMingGameInstance::OnStart()
|
||||
{
|
||||
Super::OnStart();
|
||||
//GameScript = MakeShared<puerts::FJsEnv>();
|
||||
GameScript = MakeShared<puerts::FJsEnv>(std::make_unique<puerts::DefaultJSModuleLoader>(TEXT("JavaScript")), std::make_shared<puerts::FDefaultLogger>(), 8081);
|
||||
//GameScript->WaitDebugger();
|
||||
TArray<TPair<FString, UObject*>> Arguments;
|
||||
Arguments.Add(TPair<FString, UObject*>(TEXT("GameInstance"), this));
|
||||
GameScript->Start("QuickStart", Arguments);
|
||||
}
|
||||
|
||||
void UMingGameInstance::Shutdown()
|
||||
{
|
||||
Super::Shutdown();
|
||||
GameScript.Reset();
|
||||
}
|
||||
```
|
||||
注意这里不要是8080,8080是默认给编辑器开的,在DefaultPuertsConfig.ini中。否则断点不上
|
||||
## 编写入口TS
|
||||
在Typescript/quickStart.ts中引入C++接口,输出日志,回到ue项目,运行,查看控制台是否正确输入日志。
|
||||
|
||||
|
||||
|
||||
参考文档:
|
||||
https://blog.csdn.net/weixin_41130251/article/details/127550807
|
||||
@@ -0,0 +1,19 @@
|
||||
全局安装typescript ```npm install typescript -g```
|
||||
在vscode ctrl+shift+b生成launch.json,删掉无用的部分,只保留下面内容
|
||||
```
|
||||
{
|
||||
"type": "node",
|
||||
"request": "attach",
|
||||
"name": "Attach",
|
||||
"port": 8081,
|
||||
"sourceMaps": true,
|
||||
"skipFiles": [
|
||||
"<node_internals>/**"
|
||||
],
|
||||
}
|
||||
```
|
||||
特别注意:
|
||||
编辑器设置中的默认端口8080是给puerts给编辑器开的虚拟机,我们在gameinstance里面写的不是同一个虚拟机。这里要换一个端口,用8081,GameInstance里面也用8081
|
||||
|
||||
参考
|
||||
https://github.com/Tencent/puerts/issues/993
|
||||
@@ -0,0 +1,3 @@
|
||||
# 方式一:直接使用React
|
||||
https://www.jianshu.com/p/e1b28cc36e8a
|
||||
方式二:使用MVC,将蓝图用作View
|
||||
@@ -0,0 +1,2 @@
|
||||
2.js配置生成并加载
|
||||
3.日志系统
|
||||
@@ -0,0 +1,4 @@
|
||||
[[30.资源/32-技术积累/UE引擎/TS开发/笔记:UE5 TS开发1-环境搭建]]
|
||||
[[30.资源/32-技术积累/UE引擎/TS开发/笔记:UE5 TS开发2-调试]]
|
||||
[[30.资源/32-技术积累/UE引擎/TS开发/笔记:UE5 TS开发3-UI接入]]
|
||||
[[30.资源/32-技术积累/UE引擎/TS开发/笔记:UE5 TS开发4-开发效率]]
|
||||
@@ -0,0 +1,14 @@
|
||||
UE烘焙的光照贴图的几个关键点:
|
||||
1.UE场景烘焙光照贴图中,一半存储的是辐射照度信息的球谐函数值(上半部分)。一半存储的是光的方向信息(下半部分)。
|
||||

|
||||
|
||||
2.光照贴图的UV展开方式与普通纹理UV有很大区别,因为光照贴图中每一个有效想读都对应模型表面上的一个点,所以模型上的每一个三角面在光照贴图的UV上不能互相重叠
|
||||

|
||||
3.UE的一张Lightmass光照贴图会将多个静态物体的光照贴图打包,所以一个UELightmass关照贴图中存储的是多个静态物体的光照信息。
|
||||
### TextureMapping
|
||||
用来保存中间数据和必要的信息结构,比如物体表面的辐照度和光照贴图尺寸等
|
||||
### 纹素(Texel)
|
||||
Texel存储光照贴图uv坐标和空间中几何数据(位置与法线)关系的数据。通过纹素可以通过uv坐标找到对应的空间信息。这个纹素纹理是在光栅化过程中生成出来的。遍历纹素中的每一个点就相当于遍历场景中物体表面的每一个点。
|
||||
### Corner
|
||||
Corner用于计算纹素时施加一定偏移然后进行多次光栅化取加权平均值,达到抗锯齿效果。
|
||||

|
||||
@@ -0,0 +1,84 @@
|
||||
# 烘焙贴图
|
||||
烘焙贴图使用的是光子映射算法(Photon Mapping)
|
||||
## 光子映射算法核心步骤
|
||||
FStaticLightingSystem::MultithreadProcess
|
||||
### 1.光子追踪(Photon Tracing)
|
||||
从光源向场景发射一定数量的携带能量的光子,当光子命中场景中的漫反射表面时,将这个光子信息存储到光子图(PhotonMap中)。
|
||||
光子追踪步骤如下:
|
||||
**a.发射直接光子与间接光子**(EmitPhotons/EmitIndirectPhotons)
|
||||
发射光子时会用到以下几种技术
|
||||
- 投影图(ProjectionMap)
|
||||
筛选从光源发出的光子方向,以免出现大量光子未命中的情况。将场景投影到一个以灯光为视点的矩形中,并将矩形分格,格子中有物体时,才会向这个格子发射光子。
|
||||
- 俄罗斯轮盘(Russian Roulette)
|
||||
现实中光射到表面时衰减,漫反射,折射和镜面反射等情况会同时存在,在进行计算时,这会造成光子数量暴涨,因此优化为光子碰到表面后,能量不会衰减,要么被漫反射,要么被折射,要么被吸收。
|
||||
**b.存储光子信息到光子图(PhotonMap)**
|
||||
- 在光子碰到表面时将光子存储到光子图
|
||||
- 光子图是一个平衡KD-Tree结构,类似八叉树,并不是真的是一张图
|
||||
- 光子图中的光子信息
|
||||
```
|
||||
struct Photon{
|
||||
float x,y,z;//位置
|
||||
char p[4];//RGBE编码的flux(功率)
|
||||
char phi,theta;//光子入射方向
|
||||
short flag;//KD-Tree中的flag
|
||||
}
|
||||
```
|
||||
- 所有灯光按需要发射的光子数整合到一个发射池,根据各自占比进行抽样发射,生成的光子一共存成4张光子图
|
||||
- 直接光子图DirectPhotonMap
|
||||
- 一次间接光子图FirstBouncePhotonMap(从光源发出的光,对于方向光,则是从直接光子计算过程中生成间接光子发射路径中发射,这里使用了俄罗斯轮盘,并且能量会迅速收敛)
|
||||
- 二次间接光子图SecondBouncePhotonMap
|
||||
- 照度光子图IrradiancePhotonMap(生成光子图时抽样加入这里,直接光子100%,间接光子50%,此时还没有计算照度缓存,只记录了需要进行计算的光子)
|
||||
- 这里的照度就是计算出来的光线颜色经过距离衰减之后的颜色,然后以RGBE形式存储。
|
||||
### **计算照度缓存(IrradianceCaching)**
|
||||
假设照度在邻近的空间内变化是连续且缓慢的,所以我们不需要评估每个点的照度,只需要评估其中一部分,对于其他部分,采用梯度插值计算。这样就不用对所有的点采用高代价的FG算法评估了。
|
||||
计算步骤:
|
||||
- 遍历检查哪些光子会被用到(会对场景中的物体表面造成影响)
|
||||
- 将场景中的物体展开UV并光栅化,使UV中每一个像素点能够代表物体表面的一个点在3D空间中的信息。(TexelToVertexMap)
|
||||
- 根据一定算法,找到物体表面这些点一定范围内最近的光子,标记到照度光子图里(flag)。同时在物体表面中引用这个光子信息
|
||||
- 估算光子本身的照度信息
|
||||
- 光子照度=直接光子照度+第一次反弹照度+第二次及之后反弹照度
|
||||
- 光子照度会以RGBE编码存入Irradiance光子中。
|
||||
- 写入表面照度缓存
|
||||
- 表面照度 = (自发光+天光+最近照度光子+直射光)* PBRReflection
|
||||
### 生成光照贴图
|
||||
到上一步位置,数据中存储的是光照的RGBE编码,从本步骤开始,存储的都是光照的二阶球谐参数
|
||||
**直接光照计算**
|
||||
使用RayTracing,从物体表面发射光线到各个灯,检查是否处于阴影或者半影来决定各个光照对最终表面的贡献,得到的值为2阶球谐参数。
|
||||
**间接光照计算**
|
||||
- **FinalGather**算法
|
||||
从表面上的一个采样点,对上半球区域发射大量FG采样射线,在这些射线和场景的交点处,获取交点处的照度,叠加到当前采样点的照度中
|
||||
- FG+IrradianceCache生成FinalGatherSampleCache
|
||||
【看到这里】Lightmass::ExportDeferredMappings
|
||||
|
||||
|
||||
|
||||
**KD-Tree**https://zhida.zhihu.com/search/3660200894861411379
|
||||
**RGBE编码**https://zhida.zhihu.com/search/3660200894861411379
|
||||
|
||||
|
||||
**光子图的宽高?每一个像素代表什么?**
|
||||
光子图虽然叫图,但是实际上是个八叉树,存储的空间中的点的信息。光照图中每一项代表一个发射出去的光子,八叉树中存储的是这个光子最终所在的位置。
|
||||
每个光源产生三张光子图+一张辐照图。三张光子图分别是直接光子图(DirectPhoton),一次间接光子(FirstBouncePhoton),剩余间接光子(SecondBouncePhoton),辐照光子图(IrradiancePhoton)。其中辐照是这些光子图以及如果还有之后的三次四次光子计算的权重和。
|
||||
|
||||
**为什么存的是flux,不存radiance?**
|
||||
radiance带方向,flux不带方向,方便以后的后续计算。
|
||||
|
||||
**PhotonMapping烘焙和实时渲染的区别**
|
||||
最大的不同是烘焙是为了生成光照贴图,渲染是为了绘制某一视角下的场景到屏幕上
|
||||
烘焙的时候没有当前相机概念,在计算物体表面的时候直接遍历所有的表面点。渲染则是从相机像素发射射线,计算射线碰到的点。
|
||||
|
||||
光子评估
|
||||
辐照度计算
|
||||
表面缓存
|
||||
以物体为单位,将物体表面展开UV(同最终光照贴图UV相同),UV上每一个像素点表示一个几何表面3D空间位置,用这些点从光子图中获取附近的光子信息,进行插值计算,得到表面的辐照度信息。
|
||||
|
||||
|
||||
**核心流程**
|
||||
阶段1-Photon Tracing Pass
|
||||
1.从光源发射光子,计算光子的辐照度,为每个光源建立3张光子图和一张辐照度光子图。
|
||||
2.展开物体UV,遍历UV上每一个像素,获得这个像素的3D空间信息,存储在TextureMapping(UV展开形式与贴图大小同光照贴图,可以认为是光照贴图的第一个阶段数据)中,并建立表面像素与辐照光子之间的关系。与TexelToVertexMap还不是一个东西?
|
||||
3.计算辐照光子图的辐照度。
|
||||
4.混合计算物体表面的直接光照,阴影,和光子辐照图信息。存入TextureMapping的**SurfaceCacheLighting**中
|
||||
阶段2-Lighting Pass
|
||||
1.评估几何表面的光照(包括直接光照和间接光照)
|
||||
2.将光照结果编码为光照贴图
|
||||
@@ -0,0 +1,54 @@
|
||||
# 基础物理原理
|
||||
天空大气呈现的颜色效果由**瑞利散射**、**米氏散射**、**大气吸收**等物理现象组成。
|
||||
## 瑞利散射
|
||||
### 基本原理
|
||||
瑞利散射源于入射光与微小粒子(如气体分子)的相互作用。当光波的电场使粒子中的电子发生受迫振动时,这些振动的电子会作为偶极子辐射器重新发射光,产生散射。由于粒子尺寸远小于光的波长(通常小于波长的1/10),散射呈现明显的波长依赖性。
|
||||
### 波长依赖性
|
||||
散射强度I与入射光波长 λ 的四次方成反比:
|
||||
$$
|
||||
I∝\frac{I_0}{λ^4}
|
||||
$$
|
||||
其中 $I_0$为入射光强。因此,短波光(如蓝光,λ≈450 nm)比长波光(如红光,λ≈650 nm)散射更强,导致天空呈蓝色,而夕阳因蓝光被散射殆尽呈现红色。
|
||||

|
||||
|
||||
### 散射衰减
|
||||
散射光的衰减遵循指数规律:
|
||||
$$
|
||||
I_{散射}∝I_0⋅e^{−β⋅λ^{-4}⋅L}
|
||||
$$
|
||||
|
||||
其中 L 为光程长度,β 为与粒子浓度相关的系数。**长光程(L增大)导致短波光(λ小)被剧烈衰减**,最终剩余长波光主导。
|
||||
### 天空为什么不是紫色
|
||||
太阳光中最长的波长为紫光,按上面的原理,波长最短的紫光应该散射能力最强,为什么天空没有变成紫色?
|
||||
1. 太阳光谱能量中紫光能量较少
|
||||
2. 人眼感知特性不易感知紫色,容易感知蓝色
|
||||
3. 大气臭氧层吸收掉了部分紫光
|
||||
### 早晚中午天空颜色不一样
|
||||
中午时,太阳位于天顶,穿过大气路径较短,短波长的蓝光被强烈散射到大气各个方向,但是又没有足够的距离被大气吸收。长波长的红色光散射较少,直接穿透大气到达地面,较少在天空形成散射颜色。
|
||||
早晚时,太阳穿过大气的厚度可达中午的10倍以上,蓝光被多次散射之后大幅衰减或者完全被吸收,红光因为散射能力弱,在长路径中被吸收较少,散射更充分,使天空形成红色。
|
||||
### 高海拔地区天空更蓝
|
||||
海拔升高时,大气层变薄,空气密度降低,但蓝光散射占比更高(距离近,红光直接穿透了,散射更少),更纯净。
|
||||
高海拔地区大气中大颗粒物较少,较少引发米氏散射,使天空以瑞利散射主导,减少与其他光线的混合效应。
|
||||
|
||||
## 米氏散射
|
||||
米氏散射适用于粒子尺寸与入射光波长相当或更大的情况(通常粒子半径 r≥λ/10,例如气溶胶、雾滴、细胞等)。
|
||||
米氏散射的解基于**麦克斯韦方程组的严格解**,通过分离变量法(球坐标系下)计算电磁场在球形粒子周围的分布。其核心参数为**尺寸参数(Size Parameter)**:
|
||||
$$
|
||||
x=\frac{2πr}{λ}
|
||||
$$
|
||||
其中 r 为粒子半径,λ 为入射光波长。当 x≪1 时退化为瑞利散射;当 x∼1 或更大时,需完整应用米氏理论。
|
||||
### 自然现象
|
||||
- **白色云雾**
|
||||
云雾由微米级水滴(r∼1−10 μmr∼1−10 μm)组成,米氏散射对所有可见光波长近乎均匀散射,混合后呈白色。
|
||||
- **橙红色沙尘暴**
|
||||
较大沙尘粒子(r∼10 μmr∼10 μm)对长波红光散射略强,结合吸收效应导致天空泛红。
|
||||
- **日冕与月晕**
|
||||
冰晶粒子(六角柱状)的米氏散射和衍射形成围绕日月的彩色光环。
|
||||
|
||||
## 臭氧层吸收
|
||||
|
||||
### UE中的天空大气
|
||||
|
||||
| | |
|
||||
| --- | --- |
|
||||
| | |
|
||||
@@ -0,0 +1,94 @@
|
||||
# 概念
|
||||
## 全局光照与Lightmass
|
||||
直接关照+间接光照 = 全局光照
|
||||
Lightmass是一种非实时全局光照方案,用于解决实时计算间接光照时性能消耗过高的问题。将光照计算提前到开发期烘焙到光照贴图上,达到运行时牺牲一定的空间(需要额外贴图)来换取更好的性能,同时达到较好的效果。
|
||||
## 光照贴图
|
||||
在光照烘焙后缓存光照信息的贴图
|
||||
## 体积光照贴图
|
||||
【待补充】
|
||||
## 移动性
|
||||
- static
|
||||
静态对象在游戏过程中完全不能修改,允许烘焙完全的光照贴图
|
||||
- stationary
|
||||
固定对象在游戏过程中不能移动,但是可以修改颜色,强度等。光照贴图中烘焙了部分信息,缓存动态阴影
|
||||
- Movable
|
||||
运动对象,使用实时光照,投射动态阴影
|
||||
|
||||
# 启用Lightmass
|
||||
## **基础**
|
||||
- 打开Edit->Project Settings->Engine-Rendering页签
|
||||
- 将Global Illumination-Dynamic Global Illumination Method 设置为None
|
||||
- 将Reflections-Reflection Method 设置为None
|
||||
- 将DirectLighting-Shadow Map Method 设置为Shadow Maps
|
||||
- 将Misc Lighting-允许静态光照启用
|
||||
- 菜单 Build->Build Light Only 进行烘焙
|
||||
- 菜单Window->World Settings可以开启世界场景设置窗口,在设置窗口的Lightmaps中可以查看生成的光照贴图
|
||||
## **细节与FAQ**
|
||||
1. 如果是源码引擎,build光照的时候会报错,需要从VS编译一遍UnrealLightmass工具。
|
||||
2. 在3D视口的光照->曝光中取消勾选相机设置,否则移动到暗处后等一会儿会由暗到亮(模拟人眼适应暗室的曝光过程),影响查看效果。
|
||||
3. 隐藏或者不可见的物体会也会参与间接光照。如果不需要就删掉,或者烘焙的时候改成Movable
|
||||
4. 大型Mesh需要关闭动态阴影
|
||||
5. 在场景中放置一个LightMass重要体积。
|
||||
|
||||
## 光照贴图分辨率设置
|
||||
**典型场景**:在一个特别大的面上,如果需要投影比较小的阴影,此时如果光照贴图分辨率不够,会导致阴影质量很差(阴影在贴图中面积占比较小,较小的分辨率导致阴影信息细节丢失)。在一个特别小的面上,不需要那么多细节,如果光照贴图分辨率太大,又造成内存浪费。
|
||||
**判断标准**:光照贴图过大,会导致资源的浪费,贴图太小会导致质量差,需要一个判断标准。从3D视口的光照下拉菜单中,找到优化视图模式->光照贴图密度。不要选中任何物体,场景中物体主要分成三种颜色:
|
||||
- 蓝色表示光照贴图分配小了
|
||||
- 红色表示光照贴图分配大了
|
||||
- 绿色表示光照贴图分配基本合适
|
||||

|
||||
- **设置方法**:选中物体->勾选Overridden Light Map Res,设置大小为2次幂,再重新进行烘焙
|
||||
## VLM设置
|
||||
- VLM可以在3D视口的Show->Visualize->VolumetricLightmap 打开小球显示
|
||||
- VLM可以在WorldSettings中设置,调整光照贴图单元大小,数值越小,探针越密集
|
||||
- 所有灯光共用一套场景VLM????
|
||||
- 包含烘焙的直接光照和间接光照信息,不包含阴影信息
|
||||
## 与其他光照方案的配合
|
||||
- 与Lumen互斥
|
||||
- 与AO互斥
|
||||
- 与动态阴影互斥
|
||||
- 反射可以使用SSR
|
||||
|
||||
# 静态灯光
|
||||
## 静态物体
|
||||
- 静态灯光的直接光照,间接光照,阴影烘焙到光照贴图,每个物体生成两张光照贴图
|
||||
- HQ高质量,带透明通道
|
||||
- LQ低质量,不透明
|
||||
- 静态灯光的直接光照和所有参与该灯光烘焙的静态物体的间接光照信息烘焙到附近的VLM。
|
||||
## 动态与固定物体
|
||||
- 静态灯光的光照不参与烘焙也不进行实时计算
|
||||
- 物体直接和间接光照信息通过场景中的VLM获取
|
||||
- 没有该静态光照产生的阴影(因为VLM中没有阴影)
|
||||
# 固定灯光
|
||||
### 静态物体
|
||||
- 固定灯光的直接光照进行实时计算
|
||||
- 固定灯光的间接光照烘焙到该物体的光照贴图
|
||||
- HQ光照贴图
|
||||
- LQ光照贴图
|
||||
- 固定灯光烘焙产生的内容烘焙到被投射物的阴影贴图
|
||||
- 阴影贴图仅支持4栈Stationary灯光,多余灯光的会变成实时计算
|
||||
### 固定物体
|
||||
- 直接光照是实时计算的
|
||||
- 物体间接光照依赖烘焙好的VLM
|
||||
- 如果场景中完全没有静态物体,那么固定物体不会受到任何间接光照
|
||||
- 固定灯光产生的阴影会实时计算,不会烘焙成贴图,但是会缓存,因为固定物体大概率不会形变并且不会移动
|
||||
### 动态物体
|
||||
- 阴影实时计算,其他和固定物体一样。
|
||||
# 动态灯光
|
||||
- 直接光照实时计算
|
||||
- 间接光照不计算
|
||||
- 阴影实时计算
|
||||
|
||||
# 烘焙效果调整
|
||||
|
||||
# 烘焙流程解析
|
||||
**入口**
|
||||
FStaticLightingSystem::BeginLightmassProcess
|
||||
**收集资源,打开文件并且初始化烘焙处理器**
|
||||

|
||||
进行异步构建
|
||||

|
||||
|
||||
|
||||
# 参考资料
|
||||
https://www.bilibili.com/video/BV1ep4y1d7Ew/?spm_id_from=333.788.videopod.sections&vd_source=1deaab00c5de8885422a7a7690170eba
|
||||
@@ -0,0 +1,44 @@
|
||||
#虚幻5 #动画 #角色移动
|
||||
# 动画资产
|
||||

|
||||
UE的默认设置如上图。
|
||||
### **启用根骨骼运动**
|
||||
如果勾选,会将根骨(Root)的位移数据提取出来,供各种情况选择如何使用。
|
||||
如果不勾选,外部拿不到Root的位移数据,数据会保留在原始动画中,外部即使想丢弃位移不用也做不到。
|
||||
### **根运动根锁定**
|
||||
决定根运动初始位置在哪,只有勾选了启用根骨骼运动或者强制根锁定才有效。
|
||||
**参考姿势**
|
||||
根运动的节点(Root)第一帧初始位置和旋转在导入的骨骼网格体所在的位置。
|
||||
**动画首帧**
|
||||
根运动的节点(Root)初始位置和旋转在本动画第一帧所在的位置。
|
||||
**零**
|
||||
根运动的节点(Root)初始位置为绝对0。
|
||||
### **强制根锁定**
|
||||
根运动的节点始终锁定在***根运动锁定***选项设置好的位置上。
|
||||
### **使用标准化根运动范围**
|
||||
启用后根运动的提取范围归一化。
|
||||
### 总结
|
||||
1.启用根骨骼运动,影响外部能不能拿到Root的位移数据。如果不开启,外部就拿不到。
|
||||
2.强制根锁定,影响内部动画数据要不要丢弃掉根运动数据。如果开启,Root的位移数据在整个动画时间内都被设置为一个固定的值。如果开启了强制根锁定,即使开启根骨格运动,也只能拿到一个一直不变的数据。
|
||||
3.根运动根锁定决定外部用的时候,第一帧Root在什么位置。以及强制锁定的时候在什么位置。两种情况并不冲突。
|
||||
|
||||
# **角色蓝图**
|
||||
### **使用动画资产**
|
||||
蓝图中可以直接使用动画资产,此时对动画资产的根骨格无任何额外处理。所以预期情况如下:
|
||||
动画资产设置强制根锁定,则完全没有位移运动,角色动画在原地进行姿势变化。
|
||||
动画资产设置非强制根锁定,角色播放动画,但是动画无法对Actor和SkeletalMesh造成任何影响。(无论是否勾选启用根骨格运动)
|
||||
### 使用动画蓝图
|
||||
根据动画蓝图设置决定如何使用动画中的根骨运动。在动画蓝图中的类默认值中,可以设置动画蓝图的根运动模式:
|
||||

|
||||
**无根运动提取**
|
||||
即将根运动原封不动的在动画中播放,上层逻辑拿不到RootMotion数据,也无法进行修改调整。一般可以用于纯播片时。
|
||||
**忽略根运动**
|
||||
将根运动数据提取出来不让动画直接用,上层逻辑也拿不到RootMotion数据,最终表现就是角色在原地做动作。
|
||||
**所有项中的根运动**
|
||||
将动画蓝图中所有的动画节点中用到的动画中的根运动都取出来,合到一起放到根运动数据中供上层使用,无法指定某个动作不要计算根运动。一般用于对动画表现要求较高的单人游戏。
|
||||
**仅蒙太奇中的根运动**
|
||||
动画蓝图中只有设置给动画插槽的动态蒙太奇可以获取根运动,其他动画都忽略根运动。
|
||||
**注意**
|
||||
动画蓝图中即使启用了根运动,如果动画资产本身没有启用根运动,或者是强制锁定根骨运动,上层也无法拿到根运动的数据。
|
||||
### 角色移动组件
|
||||
角色移动插件更新的过程中会跟新动画姿势,获取动画中的根运动数据,拿来进行移动。会与移动组件额外的AddInput和Speed叠加。
|
||||
@@ -0,0 +1,2 @@
|
||||
骨架位移重定向
|
||||
动画重定向
|
||||
@@ -0,0 +1,20 @@
|
||||
# 审计工具中的Statistics
|
||||
可以查看场景中的所有静态网格体的数量,面数,DrawCall数(HWInstance)和渲染段数(Inst Sections)。帮助选择优化场景的方法。
|
||||
# MergeActor
|
||||
- **功能**
|
||||
将多个不同的StaticMesh合并成一个大的StaticMesh,有以下特点:
|
||||
1.会将多个材质合并成一个纹理图集,减少DrawCall数。
|
||||
2.会减少场景中的Actor和Component数量,将多个BoundingBox合并成一个,降低引擎管理和CPU可见性剔除的开销。
|
||||
- **缺点:**
|
||||
1.增加了顶点数和法线来支持纹理图集,增加内存占用
|
||||
2.原多个小图集可能合并成一个超大图集,增加显存占用
|
||||
3.包围盒增加,剔除精度降低。
|
||||
4.纹理分辨率损失。
|
||||
5.维护复杂,要修改合并体中的小东西,要先删除合并Mesh,修改原始Actor,然后重新运行合并操作。
|
||||
6.与LOD切换冲突,一些不需要高细节渲染的物体因为合并后变成统一一个几何体管理,失去了灵活切换LOD的机会。
|
||||
- **适用场景:**
|
||||
1.远景(远处建筑的细节,大量地面碎石等)
|
||||
2.Drawcall是瓶颈时
|
||||
3.小型且紧密放置的Mesh群组。(管道网络,一排路灯等)
|
||||
# ISM/HISM
|
||||
# HLOD
|
||||
@@ -0,0 +1,9 @@
|
||||
# 1.调试命令行Commandlet
|
||||
在项目属性的调试设置中,添加参数-run=命令名 其他参数。
|
||||
比如UCookCommandlet 的命令名为Cook
|
||||

|
||||

|
||||
``` bash
|
||||
"$(SolutionDir)MapTest.uproject" -skipcompile -run=Cook -COOKALL -targetPlatform=Windows
|
||||
```
|
||||
2.如何获得编辑器菜单调用的命令行是什么?
|
||||
@@ -0,0 +1,2 @@
|
||||
Action
|
||||
Map
|
||||
@@ -0,0 +1,69 @@
|
||||
- InternalSetWorldLocationAndRotation
|
||||
- 如果有父节点
|
||||
- 获得父节点的世界Tranform
|
||||
- 将传入的世界坐标转换成本地坐标
|
||||

|
||||
- 如果有变更
|
||||
- 直接将参数设置给组件本地坐标RelativeLocation,RelativeRotation
|
||||

|
||||
|
||||
- 将组件坐标转换成世界坐标UpdateComponentToWorldWithParent
|
||||
- 如果父节点存在并且父节点还没有更新过。
|
||||
- 父节点先更新到世界坐标,转的时候可能会把自己这层也转了。
|
||||

|
||||
- 标记当前节点已更新(重要)
|
||||
- 根据父节点和组件本地坐标计算出世界坐标
|
||||
- 检查组件的ComponentToWorld和新计算的世界坐标是否有变化。
|
||||
- PropagateTransformUpdate。如果有变化 或者参数要求传送物理,传入有变化,否则传入无变化。
|
||||
- 如果有变化
|
||||
- 使用ComponentToWorld计算Bounds
|
||||
- 标记Transform为脏
|
||||
- 更新子节点UpdateChildTransforms(不要跳过PhysicsUpdate)
|
||||
- 遍历子节点,如果没更新过,对子节点调用UpdateComponentToWorld,传参PropagateFromParent
|
||||
- 更新导航数据
|
||||
- 如果没有变化
|
||||
- 更新Bounds
|
||||
- 更新子节点UpdateChildTransforms,无任何标记。
|
||||
- 标记脏
|
||||
- PostUpdateNavigationData
|
||||
|
||||
简化流程:
|
||||
1.设置本地坐标RelativeLocation/RelativeRotation。
|
||||
2.更新世界坐标ComponentToWorld。
|
||||
3.更新子节点坐标ComponentToWorld。
|
||||
4.更新Bounds,标记脏,更新子节点
|
||||
|
||||
|
||||
SceneComponent->MoveComponentImpl的逻辑。
|
||||
1.如果没更新过,先ConditionalUpdateComponentToWorld计算更新一下ComponentToWorld。这时就可能计算子节点。
|
||||
2.再通过InternalSetWorldLocationAndRotation计算更新一下,
|
||||
|
||||
|
||||
|
||||
问题:
|
||||
1.ParallelAnimation方法是并行的线程,不能保证顺序。但是只要是依赖骨骼下面的节点的东西都是下一帧一开始就判断,就可以。
|
||||
2.粒子系统一直在tick更新子节点。但是一般不会在粒子系统下面再挂子节点。
|
||||
2.我们希望在哪里设置好位置?问题可以衍生为:
|
||||
2.1 移动碰撞需要计算位置,但是基本上移动碰撞用的都是根节点。在移动碰撞里面自己计算的。所以不更新也无影响。
|
||||
2.2 攻击判定需要计算子节点的位置,以后优化方案应该是Attack变成一个单独的Sweep,用的是上一帧已经更新好的HitCollision来Sweep。
|
||||
2.3 纯物理模拟会移动,我们目前只有Boss用到了。可以另外看。
|
||||
2.4 MultiShape推挤需要用到其他角色的根节点,所以启用了MultiShape的应该在CreatureMovement里面最后更新,要么就最先更新。
|
||||
2.5 Overlap的貌似动画会在最前面更新
|
||||
|
||||
需求
|
||||
直接设置的都不影响。
|
||||
|
||||
|
||||
编辑器下,修改Level中的Actor位置
|
||||
DetachComponent/DetachActor/UnregisterComponent->UpdateComponentToWorld
|
||||
InternalSetWorldLocationAndRotation/Component->OnEditProperty
|
||||
生成Actor,设置Actor位置。
|
||||
设置Actor的某个组件位置。
|
||||
设置Actor的某个Socket的位置。
|
||||
编辑器修改某个组件位置。
|
||||
将一个组件附加到别的组件。
|
||||
将一个Actor附加到别的Actor。
|
||||
动画更新SkeletalMesh。
|
||||
Overlap的貌似动画会在最前面更新
|
||||
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
.从高度图导入Landscape
|
||||
2.使用landscape材质,设置ABCD材质。
|
||||
3.设置Foliage模型并启用。
|
||||
3.5绘制地表与路径
|
||||
4.用PCG图表生成树木
|
||||
6.用PCG图表+Spline将树木从路径上去除。
|
||||
7.用PCG图表+Spline生成道路贴画。
|
||||
@@ -0,0 +1,26 @@
|
||||
# 开发流程
|
||||
1.收集灵感(b站收藏夹,游戏玩后感/分析,影视观后感,书本读后感,其他日常感想笔记)
|
||||
2.头脑风暴(从灵感中发散一款游戏的核心玩法与想要加入的元素,此时不要进行分析,单纯发散)
|
||||
3.内容收敛,形成迭代(分析优劣,收敛到部分内容,形成)
|
||||
4.对迭代进行开发
|
||||
5.试玩总结形成新的迭代,回到4
|
||||
6.完成作品,完善世界观,角色,剧情,局外,数值,音乐音效,UI等。
|
||||
# Demo迭代
|
||||
### 功能开发
|
||||
使用虚幻蓝图
|
||||
### 场景资源
|
||||
1.Fab资源(免费或者低价,低模资源)
|
||||
2.Houdini(中等效果)
|
||||
3.白模
|
||||
### 角色资源
|
||||
1.Fab模型资源(免费或者低价,Polygon)
|
||||
2.如果没有绑定,导入Blender,AutoRigPro进行快速绑定。
|
||||
3.取mixamo获取动作,导入UE进行重定向
|
||||
4.Fab获取动作资源
|
||||
### 特效资源
|
||||
FAB
|
||||
### UI资源
|
||||
Narrative Common UI
|
||||
淘宝
|
||||
|
||||
# 正式开发
|
||||
@@ -0,0 +1,48 @@
|
||||
# 工具
|
||||
# 文档
|
||||
|
||||
# 2d美术
|
||||
|
||||
### 参考
|
||||
好看的,有参考意义的图,更在意的是图片的内容。
|
||||
用图片库软件管理,不需要版本管理,但是需要打标签,并能够使用标签索引。比如女孩,短裙,森林,厚涂,科幻等。
|
||||
**优先考虑用eagle,其次考虑用piwigo**
|
||||
做成eagle的灵感库
|
||||
### 素材库
|
||||
收集来的可以直接用来快速游戏迭代,或者用在生产过程中的中间产品,一般每一种图片用途单一,可以按用途目录来分,不需要版本管理。
|
||||
- 立绘
|
||||
- 背景
|
||||
- UI
|
||||
- 精灵图
|
||||
- 特效图
|
||||
|
||||
做成eagle的素材库
|
||||
### 资产
|
||||
直接用在项目,按项目需求组织,需要版本管理。
|
||||
- 精灵图
|
||||
- 特效图
|
||||
- 贴图
|
||||
- UI
|
||||
# 3D美术
|
||||
- **Blender用户**:直接使用 **Blender Asset Library**,零成本且高效。
|
||||
- **多软件用户**:选择 **Connecter** 或 **3D Web App**,兼顾格式兼容性和部署灵活性。
|
||||
https://www.designconnected.com/connecter/desktop-app?download=connecter
|
||||
## 模型
|
||||
### 场景
|
||||
### 人物
|
||||
未绑定
|
||||
已绑定
|
||||
### 生物
|
||||
未绑定
|
||||
已绑定
|
||||
### 机械
|
||||
未绑定
|
||||
已绑定
|
||||
### 物品
|
||||
|
||||
## 材质
|
||||
## 贴图
|
||||
|
||||
## 动作
|
||||
|
||||
|
||||
@@ -0,0 +1,148 @@
|
||||
# 基础技术
|
||||
- (兰伯特/半兰伯特光照方程)Lambert/Half-Lambert
|
||||
- (冯/布林冯光照模型)Phong/Blinn-Phong Lighting Model
|
||||
- (逐顶点光照计算/逐像素光照计算)Per-Vertex/Per-Pixel
|
||||
- (平面着色/高洛德着色/冯氏着色)Flat Shading/Gouraud Shading/Phong Shading
|
||||
- (透明度测试)AlphaTest
|
||||
- (模板缓冲)StencilBuffer
|
||||
- (帧缓冲)FrameBuffer
|
||||
- (累积缓冲)Accumulate Buffer
|
||||
- (双缓冲技术)Double Buffering
|
||||
- (高级着色编程语言)HLSL/CG/GLSL/IL
|
||||
- (图形API与渲染指令集)DirectX/OpenGL/Shader Model/Vulken/Mantle/OpenGL ES/Web GL
|
||||
- (绘制调用)DrawCall
|
||||
- (透明混合)Alpha Blending
|
||||
- (伽马校正)Gamma Correction
|
||||
|
||||
# 可编程渲染管线
|
||||
### 应用程序阶段
|
||||
- 碰撞检测
|
||||
- 加速算法
|
||||
- 输入检测
|
||||
- 动画
|
||||
- 力反馈
|
||||
- 纹理动画
|
||||
- 变换仿真
|
||||
- 几何形变
|
||||
- 层次视锥裁剪
|
||||
- 输出图元
|
||||
### 几何阶段
|
||||
- 视口变换(ViewTransform)
|
||||
- 顶点着色(VertexShading)
|
||||
- 几何着色(GeometryShader)
|
||||
- 投影(Projection)
|
||||
- 裁剪(Clipping)
|
||||
- 屏幕映射(Screen Mapping)
|
||||
### 光栅化阶段
|
||||
- 三角形设定(Triangle Setup)
|
||||
- 三角形遍历/扫描转换(Triangle Traversal/Scan Conversion)
|
||||
- 像素着色/片段着色(PixelShading/FragmentShading)
|
||||
- 合并(Merging)
|
||||
|
||||
# 纹理贴图技术
|
||||
### 纹理管线
|
||||
- 投影函数(projector function)3D坐标转UV坐标
|
||||
- 映射函数(corresponder function)UV坐标转图像像素坐标
|
||||
- 取值(obtain value) 取出像素坐标的值
|
||||
- 值变换函数(value transform function)将值变换成具体用途需要的值,比如法线,高度,透明度,颜色。
|
||||
|
||||
### 纹理缓存
|
||||
- (最近最少使用)LRU,全称Least Recently Used
|
||||
- (最近最常使用)MRU,全称Most Recently Used
|
||||
- (预取策略)Prefetching
|
||||
- (裁剪图策略)Clipmap
|
||||
### 纹理压缩
|
||||
- DXT1
|
||||
- DXT3
|
||||
- DXT5
|
||||
- ATI1
|
||||
- ATI2
|
||||
- ETC
|
||||
- ETC2
|
||||
### 贴图类型
|
||||
- (过程纹理)Procedural Texturing
|
||||
- (体纹理) Volume Texture
|
||||
- (立方体贴图)CubeMap
|
||||
- (法线贴图)NormalMap
|
||||
- (凹凸贴图)BumpMap
|
||||
- (置换贴图/位移贴图)DisplacementMap
|
||||
- (视差贴图)ParallaxMap/Virtual Displacement Map
|
||||
- (浮雕贴图/视差遮挡贴图)ReliefMap/Steep Parallax Map
|
||||
|
||||
# 相关技术
|
||||
- Mipmap
|
||||
- 双线性插值/三线性插值
|
||||
- 各向异性过滤
|
||||
- Alpha映射
|
||||
- 贴花(Decal)
|
||||
- 镂空(Cutout)
|
||||
- 广告牌(Billboard)
|
||||
- 纹理光源
|
||||
# 抗锯齿技术
|
||||
- (超级采样抗锯齿)SSAA,全称Super-Sampling Anti-Aliasing
|
||||
- (多重采样抗锯齿)MSAA,全称Multi-Sampling Anti-Aliasing
|
||||
- (覆盖采样抗锯齿)CSAA,全称Coverage Sampling Anti-Aliasing
|
||||
- (高分辨率抗锯齿)HRAA,全称High Resolution Anti-Aliasing
|
||||
- (可编程过滤抗锯齿)CFAA,全称Custom Filter Anti-Aliasing
|
||||
- (形态抗锯齿)MLAA,全称Morphological Anti-Aliasing
|
||||
- (快速近似抗锯齿)FXAA,全称Fast Approximate Anti-Aliasing
|
||||
- (时间性抗锯齿)TXAA,全称Temporal Anti-Aliasing
|
||||
- (多帧采样抗锯齿)MFAA,全称Multi-Frame Anti-Aliasing
|
||||
# 物体排序技术
|
||||
- (深度缓冲)Z-Buffer
|
||||
- (画家算法)Painter's Algorithm
|
||||
- (加权平均算法)Weighted Average
|
||||
- (深度剥离算法)Depth Peeling
|
||||
|
||||
# BRDF与PBR
|
||||
BRDF全称Bidirectional Reflectance Distribution Function,双向反射分布函数
|
||||
PBR全称Physically Based Rendering,基于物理的渲染
|
||||
### BRDF与光照
|
||||
- 辐射度
|
||||
- 光度
|
||||
- 色度
|
||||
- HDR
|
||||
- ToneMapping
|
||||
- 曝光
|
||||
- 颜色分级
|
||||
- 次表面反射(Subsurface Scattering)
|
||||
- 菲涅尔反射(Fresnel Reflectance)
|
||||
- 微平面理论(Microfacet Theory)
|
||||
# 延迟渲染(Deferred Shading)
|
||||
### 相关技术
|
||||
- (几何缓冲区)G-Buffer
|
||||
- (多渲染目标)MRT,全称Multiple Render Targets
|
||||
- (延迟光照)Light Pre-Pass
|
||||
- (分块延迟渲染)Tile-BasedDeferred Rendering
|
||||
|
||||
# 局部光照
|
||||
- 球面函数与环境映射
|
||||
# 全局光照(GI)
|
||||
全称 Global Illumination
|
||||
### 相关技术
|
||||
- (光线追踪)Ray Tracing
|
||||
- (路径追踪)Path Tracing
|
||||
- (环境光遮蔽)AO,全称 Ambient Occlusion
|
||||
- (屏幕空间环境光遮蔽)SSAO,全称Screen Space Ambient Occlusion
|
||||
- (定向遮蔽)
|
||||
- 漫反射全局光照
|
||||
- 预计算光照/光照贴图/光照探针
|
||||
- 体素追踪
|
||||
- 光线追踪
|
||||
- 镜面反射全局光照
|
||||
- 局部光照探针/局部环境贴图
|
||||
- 体素追踪
|
||||
- 光线追踪
|
||||
|
||||
# 非真实感渲染(NPR)
|
||||
|
||||
# 阴影
|
||||
- 硬阴影/软阴影
|
||||
- 平面阴影
|
||||
- 投影阴影
|
||||
- 阴影体
|
||||
- 阴影贴图
|
||||
- 级联阴影
|
||||
- PCF算法
|
||||
- PCSS算法
|
||||
- VSM/CSM/ESM算法
|
||||
@@ -0,0 +1,35 @@
|
||||
# GI方案
|
||||
### 低级
|
||||
- Lightmap +Lightmass
|
||||
- SSGI(Screen Space Global Illumination)
|
||||
### 中级
|
||||
- Lumen,软光追,Global Distance Field
|
||||
- Lumen,软光追,MeshDistance Field
|
||||
### 高级
|
||||
- Lumen,硬光追
|
||||
# AO
|
||||
### 低级
|
||||
- 预计算AO(Lightmap)
|
||||
- 屏幕空间AO(SSAO)
|
||||
### 高级
|
||||
- 距离场AO(DFAO)
|
||||
# 阴影
|
||||
### 低级
|
||||
- Lightmap
|
||||
- Contact Shadow(屏幕空间)
|
||||
- Capsule Shadow (骨骼体)
|
||||
- Cascade Shadow Map(CSM,阴影贴图)
|
||||
### 中级
|
||||
- distance field shadow
|
||||
- inset shadow(Per Object Shadow)
|
||||
### 高级
|
||||
- Virtual Shadow Map
|
||||
# 反射
|
||||
### 低级
|
||||
- Reflection Capture
|
||||
- SSR(Screen Space Reflection)
|
||||
### 中级
|
||||
- Lumen(SRT)
|
||||
### 高级
|
||||
- Lumen(HRT)
|
||||
- 平面反射
|
||||
@@ -0,0 +1,170 @@
|
||||
# 基础模型时期
|
||||
### 兰伯特光照计算
|
||||
用于计算漫反射
|
||||

|
||||
Kd值越高,物体表面越光滑
|
||||
I/ r^2 表示光的衰减,平行光不需要考虑衰减,直接用I
|
||||

|
||||
入射光线L,平面法线N。兰伯特光照有时候会出现暗部过暗的情况。
|
||||
半兰伯特光照,解决暗部过暗问题,通过调整NL值为原值的0.5-1范围来优化掉过暗的部分
|
||||

|
||||

|
||||
|
||||
### Phong模型
|
||||
环境光+漫反射+高光反射
|
||||

|
||||
环境光表示光线照射到周围环境,经过多次反射之后,照射到物体表面形成的效果。
|
||||

|
||||
漫反射,使用兰伯特光照公式计算
|
||||
高光反射
|
||||

|
||||
这里和漫反射区别主要在于使用视线向量和反射向量r
|
||||
缺陷:
|
||||
反射公式开销大
|
||||
特定镜头角度看不到高光,高光断层
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
### Blinn-Phong模型
|
||||
基于Phong模型的改进算法,解决高光断层的问题。
|
||||

|
||||
使用半程向量h(光照向量和观察向量的中间向量)和法线向量的点乘值替代观察向量和反射向量的点乘值
|
||||
优点:
|
||||
因为点乘值永远大于0(两个向量角度永远小于90度),不会出现断层,高光效果更平滑
|
||||
半程向量比反射向量计算量少
|
||||

|
||||
|
||||

|
||||
|
||||
# 后Blinn-Phong时代(1997-2004)
|
||||
### 逐顶点光照
|
||||
**核心原理**
|
||||
在顶点着色器中针对3D场景中针对每一盏灯光,每个顶点计算一次光照。在当时模型面数较低的环境下,计算效率很高。比如场景中有1000个顶点,3盏灯光,需要计算3000次。
|
||||
**优点**:
|
||||
低模下计算量小
|
||||
**缺点**:
|
||||
面上的任意点绘制时,需要对顶点计算好的值进行插值,插值与实际效果误差较大。高光出现断裂等。
|
||||
**现代应用**:
|
||||
Lowpoly+顶点色风格适用,移动端友好(纪念碑谷)
|
||||
复古像素风格适用(Hyper Light Drifter)
|
||||
### 逐像素光照
|
||||
**核心原理**
|
||||
在片段着色器中针对每一盏灯,每一个像素计算一次光照,1080p下一盏灯需要约200万次计算
|
||||
**优点**:
|
||||
效果好,每个屏幕上的像素都是直接计算的。
|
||||
支持法线贴图技术进一步优化效果。
|
||||
**缺点**:
|
||||
计算量大,但是计算量稳定(无论多少顶点,对最终计算量都没啥影响,看的是像素数)
|
||||
**现代应用**:
|
||||
在硬件计算能力越来越强大,顶点数越来越多之后,逐渐成为主流
|
||||
可以结合逐顶点光照一起使用,远处LOD物体用逐顶点光照(占有效像素面积太低效果差,远处物体顶点数也不多,可以获得更好的效果),近处物体使用逐像素光照(增强效果)
|
||||
|
||||
### CubeMap反射
|
||||
**核心原理**:
|
||||
使用6张2D纹理,对应三维空间中的+-XYZ方向。
|
||||
基于视角和法线向量计算投影在物体表面的贴图纹理坐标
|
||||

|
||||
|
||||
根据表面粗糙度选择贴图的对应mip层级。
|
||||
**优点**:
|
||||
HDR环境图预先处理,运行时能用较小性能获得优秀的效果
|
||||
**缺点**:
|
||||
因为是预先烘焙好的贴图,无法处理游戏中的动态物体
|
||||
近距离时失真
|
||||
**优化手段**:
|
||||
- **Parallax Correction** 视差矫正,解决近距离失真问题
|
||||

|
||||
- **Box Projection**:用于局部反射体
|
||||
- **Texture Array**:减少纹理切换开销
|
||||
- 混合屏幕空间反射(SSR)
|
||||
- 使用反射探针阵列
|
||||
- 双层混合反射(远场CubeMap+近场平面反射)
|
||||
- 异步纹理加载
|
||||
- BC6H图片压缩
|
||||
**现代应用**:
|
||||
1. **《巫师3:狂猎》**(2015)
|
||||
- 动态天气系统CubeMap混合
|
||||
- 每30秒更新一次环境捕捉
|
||||
2. **《极限竞速:地平线5》**(2021)
|
||||
- 车身漆面多层反射:基础层CubeMap + 清漆层光线追踪
|
||||
3. **《半衰期:爱莉克斯》**(2020)
|
||||
- VR场景中立方体贴图优化:降低mipmap等级 + 视差补偿
|
||||
### 法线贴图
|
||||
**核心原理**
|
||||
将物体法线信息存储到一张贴图中,来模拟表面凹凸效果,而不需要增加模型点面数。
|
||||
法线向量编码:
|
||||

|
||||

|
||||

|
||||
**优势**:
|
||||
丰富表面细节,但是不用提高顶点数
|
||||
**缺点**:
|
||||
边缘失真,UV接缝处不连续
|
||||
性能占用高
|
||||
无法表现动态表面
|
||||
**优化手段**:
|
||||
压缩图片
|
||||
配合视差遮蔽
|
||||
配合曲面细分
|
||||
运行时用程序生成法线(水波纹)
|
||||
**现代应用**:
|
||||
- **5.1 《赛博朋克2077》**
|
||||
- 8K法线贴图用于角色面部
|
||||
- 混合方案:
|
||||
- 基础层:4K法线贴图
|
||||
- 细节层:程序生成微表面法线
|
||||
- **5.2 《战神》(2018)**
|
||||
- 动态法线混合技术:
|
||||
- 雪地脚印实时更新法线贴图
|
||||
- 每帧更新区域:128x128像素
|
||||
- **5.3 《微软模拟飞行》**
|
||||
- 全球地形系统:
|
||||
- 动态加载1024x1024法线贴图区块
|
||||
- LOD过渡时法线mipmap混合
|
||||
# HDR与延迟渲染时代(2004-2010)
|
||||
### HDR渲染
|
||||
**核心原理**
|
||||
传统颜色记录方式只有8bit位深用来存储亮度,能用来表示256种不同程度的亮度。但是实际自然环境下的真实亮度范围大得多(最黑的和最亮的效果),因此这些信息细节就会丢失掉,产生黑不够黑,亮不够亮的情况,不够真实。
|
||||
在渲染管线增加一个HDR帧缓冲存储HDR信息,在后处理阶段进行色调映射,Bloom效果和自动曝光计算。
|
||||

|
||||
**优点**:
|
||||
能够容纳更宽的光强范围
|
||||
**缺点**:
|
||||
耗
|
||||
广色域显示设备颜色过饱和
|
||||
多屏效果不一致
|
||||
**优化方案**:
|
||||
分块亮度分析
|
||||
Bloom计算优化
|
||||

|
||||
带宽优化(压缩格式存储与动态降分辨率)
|
||||
**现代应用**
|
||||
##### **5.1 《赛博朋克2077》**
|
||||
|
||||
- HDR峰值亮度:4000nits
|
||||
- 动态范围控制:
|
||||
- 室内场景:0.01-800nits
|
||||
- 室外场景:0.1-4000nits
|
||||
- 技术方案:ACES + 自定义LUT
|
||||
|
||||
##### **5.2 《战神:诸神黄昏》**
|
||||
|
||||
- HDR实现特点:
|
||||
- 实时亮度分析(每帧64采样点)
|
||||
- 北欧极光效果:HDR色域扩展至Rec.2020
|
||||
|
||||
##### **5.3 《微软模拟飞行》**
|
||||
|
||||
- 天空渲染:
|
||||
- 大气散射HDR计算(32位浮点精度)
|
||||
- 动态曝光适应(从地面到太空)
|
||||
### 延迟着色
|
||||
核心原理
|
||||
### SSAO
|
||||
### 级联阴影
|
||||
|
||||
# PBR时代(2010-2018)
|
||||
# 实时光追时代(2018+)
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
SwapChain(交换链) Doublebuffering(双缓冲)
|
||||
深度缓冲(Depth Buffer) 模板缓冲(Stencil Buffer)
|
||||
绘制调用(DrawCall) 资源绑定描述符(Descriptor/View)
|
||||
常量缓冲区视图CBV(constant buffer view) 着色器资源视图SRV(Shader Resources View) 无序访问视图UAV(unorderrd access view)
|
||||
采样器(Sampler) 渲染目标视图资源RTV(Render Target View)深度模板视图DSV(Depth/Stencil View)
|
||||
|
||||
|
||||
超采样 SSAA(Super Sampling AntiAliasing) 2倍长宽4倍面积,4个像素一组进行降采样(4个像素求平均值) 开销太大
|
||||
多重采样MSAA(MultiSample Anti-Aliasing) 同样面积,每个像素有N个子像素,4X就是4个,8X就是8个。先计算主像素,再根据子像素是否再多边形内,决定是否要用主像素的颜色 开销比超采样小,效果比超采样差一点。
|
||||
|
||||
资源驻留(Residency)
|
||||
围栏(fence)
|
||||
资源转换(transition)
|
||||
|
||||
|
||||
创建设备
|
||||
创建围栏
|
||||
检测功能支持
|
||||
创建命令队列
|
||||
描述并创建交换链
|
||||
创建描述符堆
|
||||
创建资源视图(描述符)
|
||||
设置视口
|
||||
设置裁剪矩形
|
||||
|
||||
|
||||
|
||||
|
||||
顶点着色器VS(Vertex Shader)
|
||||
外壳着色器HS(Hull Shader)
|
||||
曲面细分(Tessellator)
|
||||
域着色器DS(Domain Shader)
|
||||
几何着色器GS(Geometry Shader)
|
||||
光栅化(Rasterizer)
|
||||
像素着色器PS(Pixel Shader)
|
||||
|
||||
|
||||
|
||||
深度归一化之后集中在近平面附近,近平面应该尽可能靠近远平面以改善深度归一化时的精度问题。
|
||||
|
||||
透视校正插值(Perspective Correct Interpolation)
|
||||
|
||||
|
||||
顶点转换阶段
|
||||
世界矩阵(World Matrix):局部坐标->世界坐标转换SRT矩阵(ScaleRotationTransform)
|
||||
观察矩阵(View Matrix): 相机局部坐标->世界坐标转换得逆转换V = W逆 = T逆R转置
|
||||
|
||||
|
||||
|
||||
向量点乘计算
|
||||
向量叉乘计算
|
||||
|
||||
逆矩阵
|
||||
转置矩阵
|
||||
旋转矩阵
|
||||
@@ -0,0 +1,109 @@
|
||||
# 核心玩法
|
||||
## 游戏目标
|
||||
在一局游戏中,选择一个角色,通过控制角色走位,让角色在多轮竞技场中使用武器自动攻击消灭随机产生的大量敌人。最终目标是在指定轮数的竞技场中生存下来,或者是支撑尽可能多的竞技场轮数。
|
||||
# 局内要素
|
||||
## 竞技场
|
||||
每一轮竞技场有时间限制,在时间限制内会不断刷新敌人,坚持到时间结束并不断杀死敌人以获得材料和经验。
|
||||
随着竞技场轮数的增加,竞技场持续时间会增加,敌人会不断增强。
|
||||
在每一轮竞技场胜利后,根据获得的经验进行角色升级,使用获得材料购买装备与道具以提升自己的实力,帮助自己的角色渡过下一轮竞技场。
|
||||
### 难度
|
||||
|
||||
| 轮数 | 时间 | 怪 |
|
||||
| --- | --- | --- |
|
||||
| 1 | 20 | |
|
||||
| 2 | 25 | |
|
||||
| 3 | 30 | |
|
||||
| 4 | 35 | |
|
||||
| 5 | 40 | |
|
||||
| 6 | 45 | |
|
||||
| 7 | 50 | |
|
||||
| 8 | 55 | |
|
||||
| 9 | 60 | |
|
||||
## 角色属性
|
||||
### 主要属性
|
||||
### 次要属性
|
||||
## 角色升级
|
||||
|
||||
| 属性部件 | 效果 | 等级1 | 等级2 | 等级3 |
|
||||
| ---- | ------ | --- | --- | --- |
|
||||
| 背 | +闪避% | 3 | 6 | 9 |
|
||||
| 眼睛 | +范围 | 15 | 30 | 45 |
|
||||
| 反应能力 | +攻速% | 5 | 10 | 15 |
|
||||
| 鼻子 | +幸运 | 5 | 10 | 15 |
|
||||
| 胸 | +护甲 | 1 | 2 | 3 |
|
||||
| 前臂 | +近战伤害 | 2 | 4 | 6 |
|
||||
| 三头肌 | +伤害% | 5 | 8 | ? |
|
||||
| 腿 | +速度% | 3 | | |
|
||||
| 牙齿 | +吸血几率% | 1 | | |
|
||||
| 手 | +收获 | 5 | | |
|
||||
| 心脏 | +最大生命 | 3 | 6 | 9 |
|
||||
| 脑 | +元素伤害 | 1 | 2 | |
|
||||
| 头骨 | +工程学 | | 3 | |
|
||||
| 肩膀 | +远程伤害 | 1 | 2 | |
|
||||
## 武器
|
||||
### 基础
|
||||
### 等级
|
||||
### 套装
|
||||
# 道具
|
||||
## 敌人
|
||||
### 树
|
||||
### Boss
|
||||
### 精英
|
||||
### 普通
|
||||
# 局外要素
|
||||
每一局游戏结束后新的一局游戏将重新开始,之前游戏获得的资源(包括角色升级,材料,装备,道具)不会继承到新一局游戏中。但是在游戏中满足一定条件之后能够开启新的角色。
|
||||
|
||||
|
||||
|
||||
# 角色
|
||||
|
||||
| 名称 | 特性1 | 特性2 | 特性3 | 特性4 | 特性5 | 特性6 | 特性7 | 特点 |
|
||||
| --- | ---------- | ----------- | ------- | --------- | -------- | -------- | --------- | ----------------------------------------------------------- |
|
||||
| 大壮 | 最大生命修改+25% | 每3最大生命+1%伤害 | 消耗品+3HP | -100%吸血几率 | 回血修改-50% | 闪避修改-50% | 速度修改-100% | 1.正面效果找生命值、幸运、护甲<br>2.负面效果优先:吸血,速度,回血,闪避<br>3.道具:回血机器人,材料+血 |
|
||||
| | | | | | | | | |
|
||||
|
||||
Build玩法
|
||||
|
||||
|
||||
|
||||
|
||||
随机元素包括
|
||||
- 道具
|
||||
- 武器
|
||||
- 特性套装加成(元素/枪械/精准)
|
||||
- 属性合成(3级)
|
||||
- 近战远程属性
|
||||
- 属性升级
|
||||
- 背1 闪避3% 2 6%闪避
|
||||
- 眼睛1 15范围 2 30范围
|
||||
- 反应能力1 5%攻速
|
||||
- 鼻子1 5幸运
|
||||
- 胸1 1护甲
|
||||
- 前臂1 2近战伤害 2 4近战伤害 3 6近战伤害
|
||||
- 三头肌1 5%伤害 2 8%
|
||||
- 腿1 3%速度
|
||||
- 牙齿1 %1吸血
|
||||
- 手1 5收获 2 8收获
|
||||
- 心脏1 3最大生命
|
||||
- 脑ii 2元素伤害
|
||||
- 头骨2 3工程学
|
||||
- 肩膀2 2远程伤害
|
||||
- 角色
|
||||
- 角色特性可以与其它特点配合
|
||||
|
||||
|
||||
关卡
|
||||
- 关卡1
|
||||
- 关卡2
|
||||
- 关卡3
|
||||
- 30秒
|
||||
- 基础怪+快速怪
|
||||
- 关卡4
|
||||
- 35秒
|
||||
- 基础怪+子弹怪
|
||||
- 关卡5
|
||||
- 40秒
|
||||
- 基础怪+快速怪+子弹怪+树
|
||||
- 关卡6
|
||||
- 45秒
|
||||
- 基础怪+快速怪+小冲刺+树
|
||||
@@ -0,0 +1,10 @@
|
||||
#龙山文化 #陶寺遗址 #陶器 #礼器 #龙盘 #龙图腾
|
||||
# 来历
|
||||
1980年,出土于[[20.领域/23-生活管理/前秦历史/遗址/陶寺遗址]]第3072号墓
|
||||
|
||||
# 外观
|
||||
新石器时代龙山文化彩绘蟠龙纹陶盘,通高9厘米,直径40.7厘米,底径15厘米,腹深7.8厘米。胎呈褐色,器表为灰褐色。盘的外壁着绳纹,内壁施黑色陶衣并经磨光,唇沿及内壁上缘一周涂成朱红色,内壁施黑陶衣为地,并用朱红彩绘制出一蟠龙纹,龙的尾部已经漫漶不清。
|
||||

|
||||
|
||||
# 用途
|
||||
象征王室身份
|
||||
@@ -0,0 +1 @@
|
||||
#武器
|
||||
@@ -0,0 +1 @@
|
||||
#武器
|
||||
@@ -0,0 +1,70 @@
|
||||
# 历史
|
||||
### **二、权威学术资源**
|
||||
|
||||
1. **国内学者与著作**:
|
||||
|
||||
- **李学勤**:《走出疑古时代》《夏商周文明研究》
|
||||
|
||||
- **许宏**:《最早的中国:二里头文明的崛起》《何以中国》
|
||||
|
||||
- **张光直**(美籍华裔):《古代中国考古学》《美术、神话与祭祀》
|
||||
|
||||
- **苏秉琦**:《中国文明起源新探》
|
||||
|
||||
- **严文明**:《仰韶文化研究》《中华文明的始原》
|
||||
- 2. **重要考古报告与期刊**:
|
||||
|
||||
- 《考古学报》《考古》《文物》:刊载最新考古发现与研究。
|
||||
|
||||
- 《夏商周断代工程报告》(2000年):争议性成果,可参考但需结合后续研究。
|
||||
|
||||
- 中国社会科学院考古研究所官网:发布权威考古资讯。
|
||||
|
||||
|
||||
|
||||
2. **国际研究**:
|
||||
|
||||
- 剑桥大学、哈佛大学等机构的汉学研究团队,关注中国早期文明与欧亚大陆互动。
|
||||
|
||||
- 日本学者如**宫本一夫**:《从神话到历史:神话时代与夏王朝》
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
### **四、推荐入门路径**
|
||||
|
||||
1. **通识读物**:
|
||||
|
||||
- 许宏《何以中国》:通俗解读二里头与早期国家形成。
|
||||
|
||||
- 李峰《早期中国:社会与文化史》:综合考古与文献的英文著作(有中译本)。
|
||||
|
||||
|
||||
|
||||
2. **纪录片**:
|
||||
|
||||
- 《探索发现:考古中国》《中国考古探秘》系列。
|
||||
|
||||
|
||||
|
||||
3. **学术平台**:
|
||||
|
||||
- 中国国家博物馆“古代中国”常设展(新石器时代至商周部分)。
|
||||
|
||||
- 高校公开课(如北大《中国古代史》先秦部分)。
|
||||
|
||||
|
||||
|
||||
|
||||
其他
|
||||
|
||||
顾颉刚 古史辨派
|
||||
|
||||
王国维 二重证据法
|
||||
|
||||
中华文明探源工程
|
||||
|
||||
夏商周断代工程
|
||||
@@ -0,0 +1 @@
|
||||
#建筑技术
|
||||
@@ -0,0 +1,2 @@
|
||||
https://m.sohu.com/a/741197328_120910862?scm=10001.992120_15-300026.0.0.1101.topic:992120:110070.0.1.0&spm=smwp.channel_247.block2_307_bNF0PJ_3_fd.56.1739275364124L3Bq8t5_324&strategyid=00014《大观学止 | 谈谈我国古代青铜器铸造方法——范铸法(上)_手机搜狐网》-上搜狐网,查看更多精彩内容
|
||||
https://m.sohu.com/a/747244069_120910862/?pvid=000115_3w_a&strategyid=00014《大观学止 | 谈谈我国古代青铜器铸造方法——范铸法(下)_手机搜狐网》-上搜狐网,查看更多精彩内容
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
#神话
|
||||
@@ -0,0 +1 @@
|
||||
#神话
|
||||
@@ -0,0 +1 @@
|
||||
#神话
|
||||
@@ -0,0 +1,15 @@
|
||||
# 基本信息
|
||||
- 时间:BC2300-BC1900
|
||||
- 地点:山西襄汾
|
||||
- 大小:208万平方米
|
||||
- 特点概述:
|
||||
- 受[[40.归档/兴趣灵感/历史/前秦历史/文化/仰韶文化]],[[40.归档/兴趣灵感/历史/前秦历史/文化/大汶口文化]]影响
|
||||
- 大邑小国,主城面积大,但是对外影响力不强,邻近[[30.资源/35-历史/前秦历史/遗址/南石遗址]]、[[30.资源/35-历史/前秦历史/遗址/开化遗址]]、[[30.资源/35-历史/前秦历史/遗址/县底遗址]]
|
||||
- 阶级已分化,不同阶级墓葬规模差异较大,但是墓葬地点还没有区分开
|
||||
- [[40.归档/兴趣灵感/历史/前秦历史/器物/彩绘盘龙纹陶盘]]
|
||||
- 时代最早的[[40.归档/兴趣灵感/历史/前秦历史/器物/鼍鼓]]实物
|
||||
- 时代最早的[[40.归档/兴趣灵感/历史/前秦历史/器物/特磬]]实物
|
||||
- 时代最早的朱书文字实物[[40.归档/兴趣灵感/历史/前秦历史/器物/礼仪祭祀类/朱书扁壶]]
|
||||
- 出土有[[40.归档/兴趣灵感/历史/前秦历史/器物/礼仪祭祀类/陶寺红铜铃]],最早的复合范铜器
|
||||
- 墓葬有棺无椁
|
||||
|
||||
Reference in New Issue
Block a user