c++中获取蓝图组件_【小功能】在UE4中管理Pivot

297e3ac223321cbf5b1c0619f9f1ff40.png

后续文章更新移步→微信公众号“虚幻社区”(mantra-xhsq),您的支持是我创作的动力。

懂得越多,越知道自己无知

什么是Pivot

在计算机图形学领域,尤其是模型领域,会涉及到两个基本的概念:本地坐标和世界坐标,很显然前者是基于物体本身的坐标,是可变的。当我们将物体切换为本地坐标后,物体移动、旋转和缩放的中心就是我们这里所提到的轴心(点),也即Pivot Point。下面一个简单的例子,相同的两个物体,相同的旋转角度,只是轴心点不同,结果也不相同。

c718c4596f4965fe31baaf68b346ffae.png
旋转之前物体的轴心点(一)

57376aec392402a9895650d87c247800.png
旋转之前物体的轴心点(二)

c94e617787644f4710521f7c4a26da41.png
两个物体都沿X轴旋转60度

轴心点的作用不言而喻,主要控制着我们对物体进行变换操作的轴心。所以不合适的轴心点会让我们的工作事倍功半。如对于齿轮模型,如果轴心点不在物体的中心位置,那么想要正确的旋转起来就会非常费劲;如果门模型的轴心点不是靠近门框,而是在任何其他位置,则想要正确的开门和关门几乎不可能。

Pivot的修改(三维软件中)

在不同的三维软件中,对于Pivot的操作不尽相同,但是又相当一部分遵循下面的操作:选择模型,点击键盘上的Insert键进入中心点编辑模式,调整好轴心点之后再按下Insert退出轴心点编辑模式。下图所示是在Houdini中演示。但是由于Houdini非常强大,本身有专门的Pivot Transform属性来存储Pivot的位置,甚至还可以Key帧,所以不必一定借助Insert。

cb0382961cb3d54860d390652f2c0bd9.png
正常操作模式

85c8a72b589518407d600868eb9b6a1a.png
轴心点模式

UE4中Pivot的管理

我们一般将三维软件中创建的模型以FBX格式(其他格式也OK,只不过FBX是用的最多的)导入到引擎中,自然也会包含模型的轴心点信息。如果导入之后发现模型的轴心点信息不正确,需要进一步调整有以下几种解决方案:

1)回到三维软件中修改然后重新导出

这种方式比较费时,效率不高,尤其是还需要美术部门的配合。对于流程和部门不健全的公司会比较麻烦。

2)在UE4中调节

相对会比较节省时间,省去了来回导入和导出的问题。时刻为开发者考虑是UE4强大之处的一种体现。那么我们如何在UE4中管理轴心点呢?有几种方式?哪种更方便?别急,我们一种一种来说。

A)直接在Viewport中调节

直接选择模型,之后点击右键,可以查看到与Pivot相关的选项.

如下图,我们找到了一个机械臂的模型,轴心点明显会有所偏移,不符合我们的要求。我们只需要选中这个机械臂模型,然后在其上右击选择Pivot>Set Pivot Offset Here。即可将轴心点设置到我们点击鼠标的位置。

b13a113ce011140533226c029010bf07.png
修改Pivot之前

1ed1631ceec6789b67333389aedb7249.png
修改Pivot

8c134cf680bed3325db50c096ca8a4ef.png
修改Pivot之后

貌似很完美,没有什么问题。但是当我们选择任意一个物体,再重新选择这个模型后,你会发现Pivot又重新回到默认的位置。所以这种修改只适用于临时的操作,不能保存。同时想在Runtime中使用也几乎不可能(当然,如果您足够强大去修改UE4的源码也是可以的)。

B)转化为蓝图类

第二种方式是直接将我们的模型创建和转化为蓝图类。有三种方式:

a)在Viewport中选择模型,之后选择Toolbar中Blueprint>Convert Selected Components to Blueprint Class

b)直接在Content Browser中模型上右击Asset Actions>Create Blueprint using This

c) 直接创建基于Actor的蓝图类,添加StaticMesh组件,并设置其StaticMesh为我们导入的模型。

做完上述步骤之后,我们可以直接修改StaticMesh组件的相对位置,这样可以间接达到修改当前模型的轴心点的位置。但是如果想修改StaticMesh组件的位置和旋转,则有一个硬性要求,这个StaticMesh组件不能是RootComponent(不太清楚的同学请自行查看官方文档),笔者修改完如下图所示:

38585955f1d6fc5d5847343a0ca1c5b2.png
左侧为视图中的效果,右侧为蓝图中的效果

这样我们可以通过创建一个Actor就可以创建拥有正确轴心点的模型。

但是这样还不是很完美。首先如果我们想进一步编辑这个模型,必须要打开蓝图类才能编辑;其次如果我们想把这个模型指定给另一个StaticMesh组件,轴心点还是不正确。

。。。。。。。

那么如何解决呢?这也就是UE4强大之处,物尽其用,请看接下来的解决方案。

C)蓝图类转化为StaticMesh

我们如果想彻底修改模型的轴心点,还需要一步:将我们修改了轴心点的蓝图类(B中的成品)转化为StaticMesh=>从哪里来,到哪里去。那么如何操作呢?

首先在Viewport中创建这个蓝图类的实例。之后在这个实例上右击Convert XXX to StaticMesh,其中XXX为我们创建蓝图类时的类名。

625af973b77384bca82940f513b61935.png

这样转化完成之后,我们就彻底的修改了模型的轴心点,而且重启UE4也没有问题。这下操作完成之后可以考虑删除原来导入的轴心点不正确的模型。

后续文章更新移步→微信公众号“虚幻社区”(mantra-xhsq),您的支持是我创作的动力。

欢迎大家加群讨论:源尚草学院虚幻社区 524418526(一群已满)790066685(请加二群)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值