行业资讯

本人没有什么cpp基础,只能是看到哪里是哪里,

2022-08-25 09:20:56

我没有cpp基础,

你只能看到哪里在哪里,

如果我错了,请纠正我。

想用这个插件来寻找几何特征。

这就是我要说的:

不过,这里虽然有分析建模插件U3D开发外包,但目的并不是为了更好的拉取ue中的模型。

为了更好地监控引擎中对象之间的关系。

一.前言

有些人可能会说:

如果要存储几何的特征,直接去dcc获取定点颜色或者纹理什么的?

然后写个导入导出同步插件什么的,

可以直接利用已有知识快速完成。

简单快速。看起来很合理

但不得不说。我只想一次性使用几何的一些特征数据,

你必须打开单个软件来做一堆操作,

保存顶点颜色或纹理并在引擎中读取它们,

真的很难接受。

其实一开始我并不知道如何处理几何。

因为如果要搜索ue的建模ue模型外包,基本都会找到mesh。

那东西还是有点简陋的;还没有深入。

二. 查找几何体!

想谈谈我的心路历程:

我从一开始就不知道怎么看几何图形。

首先,为了找到顶点ue模型外包,我想到了建模工具插件,

我从一开始就不知道可以使用几何找到顶点。

只调试建模工具的编辑功能---。

本插件提供界面和点击系统等辅助功能。以及使用几何

(这里有个坑unity3d模型外包,我之前一直在调试插件的点击动作,我以为可以找到模型操作的部分ue模型外包,但可能是因为插件异步处理模型,所以找不到点击动作的调试。部分模型处理?)

经过一番心理逆转后,我找到了正确的路径:在启用填充模式时处理几何图形。

其实就是调用geometry中的方法来处理模型。

ger:: 作为一个repeater,它获取场景中被选中的物体,里面有一些虚函数可以调用建模工具中的函数来工作。 Setup当前使用的是什么工具,会进入what工具的setup函数中。然后初始化一堆东西。例如ue模型外包,那些点击动作或悬停动作。但我想在这里使用的是创建和

并且是属于几何的类,

它们在每个工具的 .h 中定义,有时在 .cpp 中定义。有点混乱。

但实际上只是使用几何中的方法来处理模型。

因为目的是获取几何特征。您不必担心建模工具。

只需创建总和;

例如,在.cpp中它是这样创建的

	// create mesh to operate on 
	OriginalMesh = MakeShared<FDynamicMesh3>();
	FMeshDescriptionToDynamicMesh Converter;
	Converter.Convert(ComponentTarget->GetMesh(), *OriginalMesh);
	// initialize topology(topology的初始化在.h中)
	Topology = MakeUnique<FBasicTopology>(OriginalMesh.Get(), false);

三. 和。

并且是属于几何的类,

我使用函数 in 来查找几何特征

场景中的接收是存在的。

而且很奇怪。它使用大小为 2048 的块来存储网格信息

这次我选择了太多的网格面,它给了我3块

在每个区块中

我们几何的三角形面不会是 2048 的整数倍,

如果一个元素没有三角面,它会将元素值写为负数。

显然这样一堆数据当然是需要处理的,

这一次你需要用到它。

bool FGroupTopology::RebuildTopology()
{
	Groups.Reset();
	Edges.Reset();
	Corners.Reset();
	int32 MaxGroupID = 0;
	for (int32 tid : Mesh->TriangleIndicesItr())
	{
		MaxGroupID = FMath::Max(GetGroupID(tid), MaxGroupID);
	}
	MaxGroupID++;
	// initialize groups map first to avoid resizes
	GroupIDToGroupIndexMap.Reset();
	GroupIDToGroupIndexMap.Init(-1, MaxGroupID);
	TArray<int> GroupFaceCounts;
	GroupFaceCounts.Init(0, MaxGroupID);
	for (int tid : Mesh->TriangleIndicesItr())
	{
		int GroupID = FMathd::Max(0, GetGroupID(tid));
		if (GroupIDToGroupIndexMap[GroupID] == -1)
		{
			FGroup NewGroup;
			NewGroup.GroupID = GroupID;
			GroupIDToGroupIndexMap[GroupID] = Groups.Add(NewGroup);
		}
		GroupFaceCounts[GroupID]++;
	}
	for (FGroup& Group : Groups)
	{
		Group.Triangles.Reserve(GroupFaceCounts[Group.GroupID]);
	}
	// sort faces into groups
	for (int tid : Mesh->TriangleIndicesItr())
	{
		int GroupID = FMathd::Max(0, GetGroupID(tid));
		Groups[GroupIDToGroupIndexMap[GroupID]].Triangles.Add(tid);
	}

最后一个 for 循环注释将人脸分组

中间是加载有效的三角形序号

然后我使用正在使用的方法找到了顶点

还有更多关于edgeloop的功能。

使用更广​​泛或

它似乎被许多处理几何​​图形的工具调用,包括地形工具。

但在其他工具中处理有效元素似乎是在 lamdba 表达式中写一些东西..

这个类中有很多与几何相关的基本函数

例如,返回顶点的函数。等功能实现点、线、面相互访问。

也测量曲线。

和Houdini不同的地方是这里写了一套关于edge的api。还是不错的。

然后我没有看几何创建部分。

我没有深入其他地方。以后用的时候再补充。

标签: ue模型外包