- 博客(118)
- 收藏
- 关注
原创 GI、 lumen
但是实际的计算机上运行的引擎,都不可能完完全全的按照公式的完美的把效果表现出来,都是由于算力原因,在努力的接近它。既然完美的render equation 实现不了,那么我们只能通过trick hack的方法去接近效果。2、monte carlo integraion 蒙特卡罗积分法。每个点除了自己发光外,还有光源直接照射和无数个间接光的影响。如果游戏中,只计算直接光照效果,那么就是第一张的效果。1、完美的情况下 render equation。GI又是提升游戏要过的重要表现。
2025-01-17 11:27:55
167
原创 ue5 motion matching
在animinstance的update方法中 每帧都更新这个函数,每帧更新trajectory的数据。schema最重要的是定义channel,从不同的维度去解析查找符合预期的pose。资产方面 最重要的是要建立 pose search database。第二个是缓存一段历史记录,为第一个node选择的时候提供数据。第一个是根据数据选择当前的pose。先看动画蓝图 核心两个node。看看第一个node的执行顺序。各种channel的定义。
2024-12-09 20:09:14
493
原创 c++ placement new
这种特性使得placement new在自定义内存管理和性能优化方面非常有用。是一种特殊的语法,它允许你在已经分配好的内存块上构造对象。操作符不同,后者既分配内存又调用构造函数来初始化对象。在已有的内存块里new 一个对象,只调用构造函数。普通的new 是先申请内存块,再调用构造函数。这个就是placement new的用法。仅仅调用构造函数,不涉及内存分配。
2024-11-25 17:02:53
184
原创 ue5 UGameplayTask和 UGameplayBehavior 和USmartObjectBehaviorDefinition 和 FStateTreeTaskCommonBase和GAS
调用的时候需要指定IGameplayTaskOwnerInterface& Owner,目前所知道的被AAIController控制的APawn都会默认创建UGameplayTasksComponent对象,而UGameplayTasksComponent就是继承了IGameplayTaskOwnerInterface接口。启动一个Task,通过调用UGameplayTasksComponent的static方法来run一个task,还有蓝图方法。TickingTasks存放需要tick的task。
2023-12-28 14:50:26
380
原创 montage
每次都会创建一个新得 montageinstance,如果之前绑定好的end事件 就会失效。则不会所以切换section就用这个。
2023-11-30 16:51:22
504
原创 ue5 右击.uproject generator vs project file 错误
我感觉在更新vs installer的时候应该自动设置,或者unreal有相关设置,肯定不应该 用户每次升级msvc后手动设置,如果真的是需要手动设置,就成为又一个绊脚石了。那是因为 在C:\Users\{YourUserName}\AppData\Roaming\Unreal Engine\UnrealBuildTool\BuildConfiguration.xml。这个配置文件中写死了 14.31.31103要这个版本编译,所以修改这个版本号 到 您最新的就行。
2023-10-28 10:03:52
762
原创 ue5 小知识点 ue的world type,pie editor game
【代码】ue5 小知识点 ue的world type,pie editor game。
2023-09-01 13:48:15
1090
原创 ue5 小知识点 CreateDynamicMaterialInstance 和 USkeletalMeshComponent::SetSkeletalMesh 细节
但是从代码上看,SetSkeletalMesh并没有替换新的材质,只是标记了material parameter names dirty,所以这个也是一个注意的细节。UPrimitiveComponent::CreateDynamicMaterialInstance字面意思是创建了一个,内含了并且赋给了自己。不看代码常理来说,set新的mesh了 是不是材质也是新的mesh的材质?如果自己身上的材质已经是动态材质实例了就直接返回。如果不是,就创建,注意,并且赋给自己。
2023-05-08 21:05:24
1563
原创 ue5 编译问题 Custom Property List Not Initialized for
我在c++的character中 初始化了一个蓝图组件,而蓝图组件中不管是属性的类型或者在函数中用到了cast ,都又指向了 这个character的蓝图类,于是在生成cdo的时候 就是也要构建bp character的 cdo,但是此过程 就是在character的创建cdo的过程。2、在蓝图组件中,通过接口函数调用bp character 方法,这样避免出现 bp character类型在蓝图组件中。我这边出现此种问题主要的原因是 循环引用。
2022-12-29 16:48:32
536
原创 ue 编译问题 Error MSB3073
问题出现在MSVC编译器(14.32.31326:MSVC v143-VS 2022 C++v14.32-17.2)中。Visual Studio 2022 17.3.3 最新版本,版本过高。使用以下版本 MSVC编译器,重新编译即可。
2022-12-23 11:24:22
2152
原创 ue5 lyra camera
简单来说就是有个默认的cameramode ,一旦有ga要求自己的camera mode 就会把ga 的mode添加到cameramodestack中。每一帧都会调用ULyraCameraComponent::GetCameraView()下面就是多个camera mode切换的时候是如何blend的。1、cameracomponent的修改。UpdateCameraModes()中。技能用完就把技能cameramode撤销。
2022-11-01 20:23:53
1068
原创 c++多态
重载是在同一个类中,定义多个函数,具有相同的函数名字,相同的返回值,而不同的参数(参数个数,参数类型不同)。除了重载与覆盖(重写),C++还有隐藏。隐藏是指派生类的函数屏蔽了与其同名的基类函数。要想实现以上的功能首先这个函数在父类中必须是虚函数,孩子是覆盖(重写)这个方法,才有上面的效果。用这个指针调用成员函数的时候,程序能清楚的知道是调用父亲的函数还是调用孩子的函数。多态作用是能用一行代码实现同一种类中的某个功能,而可以忽略具体是哪个个体。重写是儿子重写父亲的虚函数,函数的参数和返回值都和父亲的一样。
2022-10-25 17:42:16
301
原创 c++程序在运行时内存分配
堆很大,占用是不连续的,当你new一个对象的时候就分配内存,会查询os中的一个链表,这个链表记录可用堆内存的信息。2、堆heap,由程序员分配和释放,若频繁的申请而不释放,就会出现内存泄漏的问题,最后程序结束时可能由os回收。在函数调用的时候,首先把这个函数的下一个指令地址入栈,这样做是由于栈是先进后出,等调用完函数后得知道下一个调用地址是什么,让程序往下执行下去。入栈即占用,出栈即释放,而且都是顺序入栈,然后反顺序的出栈,所以就保证了栈的占用是连续性的,所以查找可用的栈内存是很快的。
2022-10-25 16:45:40
677
原创 ue5 lyra的角色动画系统 持续更新中。。。。
当然弊端是有的,如果不同的骨架,骨架偏差比较大, retarget后动画会有偏差,所以虚幻做的retarget大面上看上去是美好的,如果要抠细节,会有很多的不足。在这些逻辑中该用到AI中的layer都用了layer,只不过这些layer有的是空的,逻辑都在其他动画蓝图中。这个方法去调用,相当于用B中的layer覆盖了A中的layer的逻辑,相当于具体的逻辑实现都在B中实现。在A中写了整个的动画逻辑比如locomotion,上半身特定动画融合,挨枪子的动画融合,全身动画融合等。
2022-09-29 16:28:33
2229
4
原创 ue5 小知识点 UStaticMeshComponent的材质 set get
set材质调用的是父亲的setmaterial方法 你会发现set的材质会保存在一个叫OverrideMaterials[ElementIndex] = Material;所以 UStaticMeshComponent的set get 和 它里面的staticmesh 的材质 是 独立的两套。get的时候 先从OverrideMaterials中拿 没有的话 再从mesh中拿。但是要想获得材质的数量 就 跟OverrideMaterials 没关系了。获得材质的数量是直接从mesh上拿的。...
2022-08-31 14:20:31
1669
原创 ue5 ActionRPG项目中的 gas
触发一个GA在GA中播放一个montage,同时等待一个tag的到来,而这个tag的到来一般是由montage中通过anim notify触发的。GA在等到tag到来的时候 就通过tag找出对应的ge(能找到说明也是碰撞到了对方)然后把ge给了对方,然后就是通过Exculation修改target的属性。首先ActionRPG项目中的GAS是在gas的基础上 增加了 很多c++代码的gas,对于抱着入门学习的同学,学起来 可能会更加迷茫。在ActionRPG中 一个简单的技能是如下过程。...
2022-08-29 16:56:57
612
原创 ue5 小知识点 actor和actor之间的嵌套
所以actor之间没有直接的addactor等操作 而是变相的通过scene component的层级结构来确定actor之间的层级结构。UE里是通过Child:AttachToActor或Child:AttachToComponent来创建父子连接的。一种是scene component 这种是带transform的 是能在场景中渲染的,同时很重要的是 能嵌套的。第二种是普通的actor component 这种不带transform 在actor中是平级的。actor和actor的嵌套。...
2022-08-26 15:31:16
2731
原创 ue5 lyra探索分析2 持续更新中
意思是 你玩一个角色 同时 还有其他玩家和你一起玩, 那么你电脑上 ,你操作的角色就是ROLE_AutonomousProxy 你电脑上的其他玩家就是ROLE_SimulatedProxy。如果pawn的controller合法 如果这个pawn是local player controller调用 load into experience方法。如果是客户端并且localrole是ROLE_AutonomousProxy。如果是服务器 并且localrole是ROLE_Authority。
2022-08-23 13:52:43
739
原创 ue5 gas
attribute 是 attribute set 负责复制的,一般来说 只有ge才能修改attribute。asc放在playerstate中是最好的。asc 里面有 当前的 ge 当前的ga。asc负责复制 这些ge ga。
2022-08-19 15:25:27
306
原创 ue5 小知识 FreezeRendering 查看视锥内渲染的物体
在运行时 运行命令行1、FreezeRendering2、ToggleDebugCamera --------------------------------------------------------------------------渲染的时候查询三角形数量和drawcall 用stat rhi---------------------------------------------------------打开和关闭auto instancer.meshdrawcommands.dynamicins
2022-06-30 19:30:26
1117
原创 ue5 小知识点 random point in Bounding Boxf From Stream
random point in Bounding Boxf From Stream
2022-06-09 11:46:50
446
原创 纯 windows 环境 制作 mac os 安装盘 usb
有个很老的 mac mini 2012 系统进不去了,得重装系统了用U盘usb安装mac os,必须下载可引导的镜像,从苹果官网下载的原装镜像不能通过usb安装下载可引导的镜像的途径有:1、taobao 十块钱左右2、各大国内网站,需要充值当vip。下载完之后,需要专门的软件把镜像文件dmg写入到u盘中,U盘大小最好是16g。以balenaEtcher为利选择第一个 按步骤 执行就可制作好启动盘后,把u盘到mac 上,启动mac前长按住option键盘,.
2022-05-25 10:52:14
2752
原创 ue5 智能指针
1 持有非UObject对象的智能指针TSharedPtr,TSharedRef,TWeakPtr,TSharedFromThis,TUniquePtr,TUniqueObj,TPimplPtr,TNonNullPtr,TOptional2 持有UObject的智能指针TStrongObjectPtr,TWeakObjectPtr,FSoftObjectPtr,TSoftObjectPtr,TSoftClassPtr,FSoftObjectPath,FLazyObjectPtr,TPersist
2022-05-08 21:13:35
1150
原创 ue5 lyra探索分析1
刚开始默认的地图中然后就把这些数据传送给了 lyragammode了在这个函数里 处理上面的lyraexperiencedefinition数据 其中包括pawn是谁 都有什么action
2022-04-22 19:08:58
6195
5
原创 ue5 小知识点 动画蓝图接口 不能在editor中复制新的
不能快捷键Ctrl+D复制,因为复制的新的是和之前的接口是一个,在动画蓝图link的时候会冲突报错,只能新建或者右键 duplicate。
2022-04-19 14:16:00
1174
原创 ue 小知识点 换装 一个人多个部分mesh 动画
为了换装,把人分成了 很多部分,比如头部,上半身 下半身,但是人的动画是用的 人的整体骨骼的。这个时候部位也要跟随主骨骼的动画。有一下两种情况:1、头部和身体不同骨架,头部要跟随身体动2、部位和身体相同骨架,比如上半身和 下半身一些背景总骨架上身骨架头部...
2022-03-06 13:35:24
1281
原创 ue 小知识点 controller possess pawn的过程
void AController::Possess(APawn* InPawn){ if (!bCanPossessWithoutAuthority && !HasAuthority()) { FMessageLog("PIE").Warning(FText::Format( LOCTEXT("ControllerPossessAuthorityOnly", "Possess function should only be used by the network autho.
2022-02-15 11:00:21
2015
原创 ue5 小知识点 用户动画操控的精髓
a、character移动了带动 controller的移动,因为一般controller是跟随character的,这里controller实际上也是camera。2、input move的时候如果移动的方向和character的方向不一致,character是需要旋转到 和摄像机一致的方向的。这个时候 character是朝哪个方向移动,也可能是character的正前方也可能是controller的正前方。1、controller的旋转 会带动character的旋转。1、input 的turn。
2022-01-15 13:26:46
2628
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人