1.程序员如何学习源代码
2.UE5 ModelingMode & GeometryScript源码学习(一)
3.VGGish源码学习
程序员如何学习源代码
源代码的源码学学习是一个从整体到不断细化的过程,在学习中不能想着一步到位,源码学要慢慢的源码学去深入。源代码作为软件的源码学特殊部分,是源码学程序员在工作中不能忽略的。想要学习源代码,源码学亡灵战车源码你不妨按以下步骤试试。源码学第一步,源码学画出整个程序流程图,源码学理解整个程序的源码学思想。这个方式可以让人很直接的源码学理解程序的整体流程,而不会被代码所干扰,源码学让程序员从总体上把握程序。源码学第二步,源码学对流程各节点(函数或过程)的源码学安卓项目案例源码理解。流程的每一节点是构成整个流程的不可缺少的部份。第三步,把流程和流程各节点串起来理解整个程序,如果可以的话还可以记笔记总结下自己的经验。第四步,如果想深刻的学习到源代码的精髓所在,你可以写一些相近的程序进行操练。但是你理解了这个程序并不代表你掌握了这个程序,只有当你编写一个相近的程序时,你才知道自己到底理解了多少,掌握了多少。
UE5 ModelingMode & GeometryScript源码学习(一)
前言
ModelingMode是虚幻引擎5.0后的新增功能,用于直接在引擎中进行3D建模,无需外接工具,打开 .e 的源码文件实现快速原型设计和特定需求的模型创建。GeometryScript是用于通过编程方式创建和操控3D几何体的系统,支持蓝图或Python脚本,提供灵活控制能力。
本文主要围绕ModelingMode与GeometryScript源码学习展开,涵盖DMC简介、查找感兴趣功能源码、动态网格到静态网格的代码介绍。
起因
在虚幻4中,通过RuntimeMeshComponent或ProceduralMeshComponent组件实现简单模型的程序化生成。动态网格组件(DynamicMeshComponent)在UE5中提供了额外功能,如三角面级别处理、转换为StaticMesh/Volume、烘焙贴图和编辑UV等。大智慧除权源码
将动态网格对象转换为静态网格对象时,发现官方文档对DMC与PMC对比信息不直接涉及此转换。通过搜索发现,DynamicMesh对象转换为StaticMesh对象的代码位于Source/Runtime/MeshConversion目录下的UE::Modeling::CreateMeshObject函数中。
在UE::Modeling::CreateMeshObject函数内,使用UEditorModelingObjectsCreationAPI对象进行动态网格到静态网格的转换,通过HasMoveVariants()函数接受右值引用参数。UEditorModelingObjectsCreationAPI::CreateMeshObject函数进一步处理转换参数,UE::Modeling::CreateStaticMeshAsset函数负责创建完整的静态网格资产。
总结转换流程,DynamicMesh对象首先收集世界、变换、资产名称和材质信息,通过FCreateMeshObjectParams对象传递给UE::Modeling::CreateMeshObject函数,微信拍卖程序源码该函数调用UE::Modeling::CreateStaticMeshAsset函数创建静态网格资产。
转换为静态网格后,程序创建了一个静态网格Actor和组件。此过程涉及静态网格属性设置,最终返回FCreateMeshObjectResult对象表示转换成功。
转换静态网格为Volume、动态网格同样在相关函数中实现。
在Modeling Mode中添加基础形状涉及UInteractiveToolManager::DeactivateToolInternal函数,当接受基础形状时,调用UAddPrimitiveTool::GenerateAsset函数,根据面板选择的输出类型创建模型。
最后,UAddPrimitiveTool::Setup函数创建PreviewMesh对象,UAddPrimitiveTool::UpdatePreviewMesh()函数中通过UAddPrimitiveTool::GenerateMesh生成网格数据填充FDynamicMesh3对象,进而更新到PreviewMesh中。
文章总结了Modeling Mode与GeometryScript源码的学习路径,从动态网格到静态网格的转换、基础形状添加到输出类型对应函数,提供了一条完整的流程概述。
VGGish源码学习
深入研究VGGish源码,该模型在模态视频分析领域颇为流行,尤其在生成语音部分的embedding特征向量方面。本文旨在基于官方源码进行学习。
VGGish的代码库结构简洁,仅包含几个.py文件。文件大体功能明确,下文将结合具体代码进行详述。在开始之前,需要预先下载两个预训练文件,与.py文件放在同一目录。
VGGish的环境安装过程简便,对依赖包的版本要求宽松。只需依次执行安装命令,确保环境配置无误。运行vggish_smoke_test.py脚本,如显示"Looks Good To Me"则表明环境已搭建完成。
着手VGGish模型的拆解,以vggish_inference_demo.py中的main函数为起点,分为两大部分:数据准备与前向推理获得Embedding特征及特征后处理。
在数据准备阶段,首先确认输入是否为.wav文件,若非则自行生成。接着,使用vggish_input.py模块将输入数据调整为适用于模型的batch格式。假设输入音频长1分秒,采样频率为.1kHz,读取的wav_data为(,)的一维数组(若为双声道,则调整为单声道)。
进入前向推理阶段,初始化特征处理对象pproc及记录器对象writer。通过vggish_slim.py模块构建VGG模型,并加载预训练权重。前向推理生成维的embedding特征向量。值得注意的是,输入数据为[num_samples, , ]的三维数据,在推理过程中会增加一维[num_samples,num_frames,num_bins,1],最终经过卷积层提取特征,FC层压缩,得到的embedding_batch为[num_samples,]。
后处理环节中,应用PCA(主成分分析)对embedding特征进行调整。这一步骤旨在与YouTube-8M项目兼容,后者已发布用于数百万YouTube视频的PCA/whitened/quantized格式的音频和视觉嵌入。不过,若无需使用官方发布的AudioSet嵌入,则可直接使用网络输出的原始嵌入,无需进行PCA操作。
本文旨在为读者提供深入理解VGGish源码的路径,通过详述模型的构建、安装与应用过程,旨在促进对模态视频分析技术的深入学习与应用。