注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

眼睛想旅行

技术就是我的生命与信仰!

 
 
 

日志

 
 
关于我

精通C,C++,python,Erlang。并熟悉各种其他编程语言,用cocos2dx游戏引擎作过几个项目。会MySQL增删改查,了解OpenGL渲染原理。懂单片机,能设计数字电路系统,会画电路图和设计电路板。喜欢了解最新前沿技术,并持续关注和学习新技术。

网易考拉推荐

Unrealengine4C++一些调试用的绘制函数(转)  

2015-07-06 23:26:32|  分类: UE4 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

转来学习和收藏,转自:http://www.it165.net/pro/html/201412/29772.html

  • UE4中提供了很多预定义的调试绘制函数,在做调试的时候还是比较方便的。可以在场景里绘制点、线、圆、球、箭头、椎体、胶囊、甚至样条线、字符串、网格等等,基本上该有的都有了。比较赞的是,你能控制线条的厚度,调试的时候就比较直观了。

    要使用这些函数,只需要包含DrawDebugHelpers.h 头文件即可。下面介绍几个主要的绘制函数:

    1.绘制点

    1.ENGINE_API void DrawDebugPoint(const UWorld* InWorld, FVector const& Position, float Size, FColor const& PointColor, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);

    可选参数里面,我们可以控制点的尺寸、颜色、持续时间等。bPersistentLines表示,当前绘制的整个对象,是不是持久对象,设为true,它会一直显示当前World,直到你调用下面这个方法,释放它:
    1.void FlushPersistentDebugLines(const UWorld* InWorld);
    其他的绘制函数,此参数意义都是一样的。

    2.绘制线

    1.ENGINE_API void DrawDebugLine(const UWorld* InWorld, FVector const& LineStart, FVector const& LineEnd, FColor const& Color, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0float Thickness = 0.f);

    注意Thickness这个参数,它控制线条的厚度。

    3.绘制箭头

    1.ENGINE_API void DrawDebugDirectionalArrow(const UWorld* InWorld, FVector const& LineStart, FVector const& LineEnd, float ArrowSize, FColor const& Color, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);
    这个函数绘制一个有向箭头,和绘制线差不多,ArrowSize是箭头的尺寸。

    4.绘制Box

    1.ENGINE_API void DrawDebugBox(const UWorld* InWorld, FVector const& Center, FVector const& Extent, FColor const& Color, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);
    2./** Draw a debug box with rotation */
    3.ENGINE_API void DrawDebugBox(const UWorld* InWorld, FVector const& Center, FVector const& Box, const FQuat & Rotation, FColor const& Color, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);

    第一个根据Box的尺寸绘制,第二个额外的可以按照一定的旋转绘制。

    5.绘制球体

    1.ENGINE_API void DrawDebugSphere(const UWorld* InWorld, FVector const& Center, float Radius, int32 Segments, FColor const& Color, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);
    Segments控制球体的分段,越大越精细。

    6.其他

    还有很多不太常用的,可以绘制2D圆、圆柱、椎体、平截头体、胶囊等。这里只列出来,具体见DrawDebugHelpers.h
    01.ENGINE_API void DrawDebugCoordinateSystem(const UWorld* InWorld, FVector const& AxisLoc, FRotator const& AxisRot, float Scale, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);
    02./** Draw Debug Circle */
    03.ENGINE_API void DrawDebugCircle(const UWorld* InWorld, const FMatrix& TransformMatrix, float Radius, int32 Segments, const FColor& Color, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);
    04./** Draw Debug 2D donut */
    05.ENGINE_API void DrawDebug2DDonut(const UWorld* InWorld, const FMatrix& TransformMatrix, float InnerRadius, float OuterRadius, int32 Segments, const FColor& Color, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);
    06./** Draw a debug sphere */
    07.ENGINE_API void DrawDebugSphere(const UWorld* InWorld, FVector const& Center, float Radius, int32 Segments, FColor const& Color, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);
    08./** Draw a debug cylinder */
    09.ENGINE_API void DrawDebugCylinder(const UWorld* InWorld, FVector const& Start, FVector const& End, float Radius, int32 Segments, FColor const& Color, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);
    10.ENGINE_API void DrawDebugCone(const UWorld* InWorld, FVector const& Origin, FVector const& Direction, float Length, float AngleWidth, float AngleHeight, int32 NumSides, FColor const& Color, bool bPersistentLines=falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);
    11./** Used by gameplay when defining a cone by a vertical and horizontal dot products. */
    12.ENGINE_API void DrawDebugAltCone(const UWorld* InWorld, FVector const& Origin, FRotator const& Rotation, float Length, float AngleWidth, float AngleHeight, FColor const& DrawColor, bool bPersistentLines=falsefloat LifeTime=-1.f, uint8 DepthPriority=0);
    13.ENGINE_API void DrawDebugString(const UWorld* InWorld, FVector const& TextLocation, const FString& Text, class AActor* TestBaseActor = NULL, FColor const& TextColor = FColor::White, float Duration = -1.000000);
    14.ENGINE_API void DrawDebugFrustum(const UWorld* InWorld, const FMatrix& FrustumToWorld, FColor const& Color, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);
    15./** Draw a capsule using the LineBatcher */
    16.ENGINE_API void DrawDebugCapsule(const UWorld* InWorld, FVector const& Center, float HalfHeight, float Radius, const FQuat & Rotation, FColor const& Color, bool bPersistentLines=falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);
    17./** Draw a debug camera shape.  FOV is full angle in degrees. */
    18.ENGINE_API void DrawDebugCamera(const UWorld* InWorld, FVector const& Location, FRotator const& Rotation, float FOVDeg, float Scale=1.f, FColor const& Color=FColor::White, bool bPersistentLines=falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);
    19.ENGINE_API void FlushDebugStrings(const UWorld* InWorld);
    20. 
    21.ENGINE_API void DrawDebugSolidBox(const UWorld* InWorld, FVector const& Center, FVector const& Box, FColor const& Color, bool bPersistent=falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);
    22.ENGINE_API void DrawDebugSolidBox(const UWorld* InWorld, FVector const& Center, FVector const& Extent, FQuat const& Rotation, FColor const& Color, bool bPersistent=falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);
    23.ENGINE_API void DrawDebugMesh(const UWorld* InWorld, TArray<FVector> const& Verts, TArray<int32> const& Indices, FColor const& Color, bool bPersistent=falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);
    24.ENGINE_API void DrawDebugSolidPlane(const UWorld* InWorld, FPlane const& P, FVector const& Loc, float Size, FColor const& Color, bool bPersistent=falsefloat LifeTime=-1, uint8 DepthPriority = 0);
    25. 
    26./* Draws a 2D Histogram of size 'DrawSize' based FDebugFloatHistory struct, using DrawTransform for the position in the world. */
    27.ENGINE_API void DrawDebugFloatHistory(UWorld const & WorldRef, FDebugFloatHistory const & FloatHistory, FTransform const & DrawTransform, FVector2D const & DrawSize, FColor const & DrawColor, bool const & bPersistent = falsefloat const & LifeTime = -1.f, uint8 const & DepthPriority = 0);
    28. 
    29./* Draws a 2D Histogram of size 'DrawSize' based FDebugFloatHistory struct, using DrawLocation for the location in the world, rotation will face camera of first player. */
    30.ENGINE_API void DrawDebugFloatHistory(UWorld const & WorldRef, FDebugFloatHistory const & FloatHistory, FVector const & DrawLocation, FVector2D const & DrawSize, FColor const & DrawColor, bool const & bPersistent = falsefloat const & LifeTime = -1.f, uint8 const & DepthPriority = 0);

  评论这张
 
阅读(218)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017