2017-03-23 00:08:05 shidya 阅读数 1934
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2392 人正在学习 去看看 杨石兴

在此记录一下项目中用到的两种模拟抛物线的方法:

  1. 定高度,已知起点PointA,终点PointB

    1. 根据公式T = T1 + T2 ; T1为上升所用时间,T2为下降所用时间;

    2. T1 = Sqrt(2h/G); T2 = Sqrt( [2h + 2abs(Zb-Za)]/g );

    3. 根据公式 Speed(x) = (Xb-Xa)/t。Speed(y) = (Yb-Ya)/t。Speed(z)=Sqrt(2Gh);

    4. Tick(DeltaTime){ AddActorWorldOffset(Speed); Speed(Z)= Speed(Z) - G; }

  2. 定时间,已知起点PointA,终点PointB

    1. 根据公式求得高度 h = pow(Gpow(t,2) - 2abs(Zb-Za),2)/(8Gpow(t,2)) , G 为重力加速度,pow,abs为数学运算,Zb为PointB点的Z周值,Za为PointA点的Z轴值。t为定时间。

    2. 根据公式 Speed(x) = (Xb-Xa)/t。Speed(y) = (Yb-Ya)/t。Speed(z)=Sqrt(2Gh);

    3. Tick(DeltaTime){ AddActorWorldOffset(Speed); Speed(Z)= Speed(Z) - G; }

  3. 待补充。。。

2014-09-19 22:24:29 shangguanwaner 阅读数 9902
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2392 人正在学习 去看看 杨石兴

默认的,UE4,会以AGameMode中设置DefaultPawnClass对象中摄影机作为默认摄影机。有时候我们想要一个全局的摄影机对场景进行观察,这就需要重新创建一个摄影机,并在这两个摄影机直接切换。下面看下如何实现。

在APlayerController类中,有一个SetViewTarget方法,参数是一个AActor指针,就是实现此功能的。因为参数必须是AActor,即必须是AActor中包含的Camera组件才有效,所有,先创建一个AActor对象。

FreeCameraActor.h

UCLASS()
class NANTOPDOWN_API AFreeCameraActor : public AActor
{
GENERATED_UCLASS_BODY()


public:
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Camera)
TSubobjectPtr<class UCameraComponent> TopDownCameraComponent;


UFUNCTION(BlueprintCallable, Category = "View Target")
void ChangeViewTarget();


virtual void BeginPlay() override;

private:
AActor* OldActor;
};


ChangeViewTarget()方法提供给Blueprint调用,用于在Character的Camera和FreeCamera之间切换。


FreeCameraActor.cpp


AFreeCameraActor::AFreeCameraActor(const class FPostConstructInitializeProperties& PCIP)
: Super(PCIP)
{
TopDownCameraComponent = PCIP.CreateDefaultSubobject<UCameraComponent>(this, TEXT("TopDownCamera"));
this->RootComponent = TopDownCameraComponent;
OldActor = NULL;
}


void AFreeCameraActor::ChangeViewTarget()
{
AActor* pActor = this->GetWorld()->GetFirstPlayerController()->GetViewTarget();
if (pActor != OldActor)
{
this->GetWorld()->GetFirstPlayerController()->SetViewTarget(OldActor);
}
else
{
this->GetWorld()->GetFirstPlayerController()->SetViewTarget(this);
}
}


void AFreeCameraActor::BeginPlay()
{
Super::BeginPlay();


OldActor = this->GetWorld()->GetFirstPlayerController()->GetViewTarget();


this->GetWorld()->GetFirstPlayerController()->SetViewTarget(this);
}


在Editor中创建一个从AFreeCameraActor继承的Actor,并拖放到场景中去。可以看到一个包含了摄影机的对象。然后编辑Level Blueprint,加入脚本代码



Play场景,按下1键,就能看到摄影机在character和刚才新建的摄影机间进行切换了。

2019-08-24 17:22:25 weixin_43989825 阅读数 33
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2392 人正在学习 去看看 杨石兴

前言

刚接触UE4没几天,从头开始实现了画轨道的功能,自己记录一下实现过程以及遇到的问题。

环境配置

因为电脑上先安装的VS2017,后来才安装的UE4,所以在UE4用到VS的时候有些问题,打不开VS,后来发现是一些需要的组件没有安装,所以搜一下UE4+VS2017配置的教程,看看安装的时候需要哪些组件,再在VS里添加上就好了。

实现步骤

  1. 文件–新建项目–空白蓝图,随便起了个项目名 draw。在这里插入图片描述
  2. 文件–新建C++类,继承Actor,然后next,命名自己随意写,我的是 drawlineActor,完成后会打开VS,有.h和.cpp文件。
  3. 在.cpp文件的BeginPlay中添加以下代码,在这里只是试验一下功能,具体在哪里,看自己需求。
    TArray<FBatchedLine> lines;  
	TArray<FVector>  mVertexes;
	mVertexes.SetNum(4);  //需要先设置个数,不然会报错,之前报了些乱七八糟的错误,经大神指点才知道需要设置
	mVertexes[0].X = -180.f;  //这里自己随意设置数值,为了试验功能而已
	mVertexes[0].Y = 0.f;
	mVertexes[0].Z = 32.f;
	mVertexes[1].X = -215.f;
	mVertexes[1].Y = -120.f;
	mVertexes[1].Z = 32.f;
	mVertexes[2].X = -260.f;
	mVertexes[2].Y = -120.f;
	mVertexes[2].Z = 30.f;
	mVertexes[3].X = -200.f;
	mVertexes[3].Y = 40.f;
	mVertexes[3].Z = 40.f;
	ULineBatchComponent* const LineBatchComponent = GetWorld()->PersistentLineBatcher;
	for (auto i = 0; i < mVertexes.Num() - 1; i++)
	{
		FVector start = FVector(mVertexes[i].X, mVertexes[i].Y, mVertexes[i].Z);
		FVector end = FVector(mVertexes[i + 1].X, mVertexes[i + 1].Y, mVertexes[i + 1].Z);
		FBatchedLine line = FBatchedLine(start,
			end,
			FLinearColor(1, 0, 0, 1),  //设置颜色、透明度
			0, // 设置显示时间。设为0,表示永久显示
			0.3,
			4
		);
		lines.Add(line);
	}
	LineBatchComponent->DrawLines(lines);
  1. 添加以上代码后,肯定报错了,因为没有添加相应的头文件。现在在.h中添加相应头文件,但是需要保证generated.h在最后。
#include "Math/Vector.h"
#include "Components/LineBatchComponent.h"

在这里插入图片描述
虽然这几个地方会标红,但是可以忽略,待会编译运行之后就没了。我也不知原因。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
5. 在UE4中,选择新建空白蓝图类,点击之后,在所有类中,搜索自己创建的类,我的是 drawlineActor。

在这里插入图片描述![在这里插入图片描述](https://img-blog.csdnimg.cn/20190824165220710.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzk4OTgyNQ==,size_16,color_FFFFFF,t_70
6. 创建之后,在这里找到他,并将它拖到场景中,任意位置就可以。
在这里插入图片描述
7. 将VS中的代码进行生成,结束后在UE4点击编译,结束后,播放。
在这里插入图片描述

清除线,重新画

因为项目需要,所以得不定时的把之前的线清除掉,重新根据新的数据画线,经过很多尝试,才知道是这样清除。最后加这两行代码。

LineBatchComponent->BatchedLines.Empty();
lines.Empty();

代码调试

期间遇到很多问题,比如线画不出来等,所以就需要调试代码,调试步骤见以下链接,讲的挺清楚的。
UE4–VS代码调试模式

2018-11-15 17:21:01 xiaoxiaolooi 阅读数 256
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2392 人正在学习 去看看 杨石兴

unreal GIS 模块

unreal4 源代码模块

自从unreal4 开源以来,osg ogre 渐渐不能用来吃饭,于是本着听人劝吃饱饭的思想,转头unreal门下,继续为混口饭事业,投身革命。可是unreal的c++编程基本没有什么例子可看,只好自己从头做起。

  1. 开发者驱动
  2. 编辑器
  3. 工程目录
  4. 基础框架代码
  5. 第三方库

在这里插入图片描述
这个是文档目录,代码量难以阅读,决定从以下三方向入手,第一次写文字,真心不容易。
1.案例编写使用unreal4 的普通界面搭建自定义三维场景 介绍 editor层的基础代码
2.添加GIS地图属性信息 介绍 驱动层的基础代码
3.程序化植物合成 介绍 与unreal基础平台结合
以后会陆续跟新到这里
推荐大家使用 阿里云 https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=ic4sfgeu

2018-06-23 15:45:14 zsyddl2 阅读数 1281
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2392 人正在学习 去看看 杨石兴

    当前revit 建筑模型软件导出的模型对象 three.js的json文件,都是面法线。(暂时是这样的,是否能导出顶点法线,后续确定,7-9 确定js文件可以标记顶点法线和面法线,同时revit可以通过返回的法线个数与顶点个数是否相等判断是面法线还是顶点法线)。

    unreal 显示总是发现不对,要么该光照的没关照,或者直角面,背光处却透光了。开始未给定法线,经过对比分析,应该是法线没对。于是打算加入指定的法线。

    1、为什么开始没给定法线?在测试自定义的模型时候,不给定法线,仍然可以显示物体。而且默认情况下,按照三角形顶点顺序,自然就可以确定顶点法线的。所以认为不给定也最多影响效果的好坏,而不应该影响渲染的正确错误。事实证明,不给定法线,影响的是渲染正确效果。

    在不给定顶点法线的情况下,(UProceduralMeshComponent),会设置顶点法线为 0, 0, -1. 而切线空间, tangentZ 使用的为该顶点法线。所以按照面的法线的渲染方式,那计算的光照肯定是有问题的。

  2、 打算指定顶点法线。

    模型数据只有面法线,没顶点法线,怎么办?

    2.1根据理解。顶点法线,可以使用与顶点相接的面法线综合计算均值得到顶点法线。按照这个方式计算了顶点法线,效果是变化很多。但是却不正确,平面不平了。。。分析原因为:渲染过程中,面的某一点法线,使用面顶点法线,经过插值计算得到。这样,平面的每个点的法线,使用综合得到的顶点法线反计算出,自然不是指向同一个方向。所以不正确。

    2.2那只有另一个办法,要保持平面平整,那顶点法线必须保持平面法线的值。这样一个顶点无法被几个面共享顶点数据了。那就对每个面单独生成顶点,以及顶点的法线。按照这个方式,那顶点数据量可能成倍增长。比如一个立方体,应该是8个顶点。使用顶点法线的方式,需要每个面的顶点独立,那么就应该是每个面(4边行面) 4个点,中共24个顶点。增加了三倍。用ue editor 查看 cube 立方体。查看其定点数量,果然,每个顶点,重复用了3个顶点数据。 经过独立顶点的方式,使用顶点法线,渲染结果,正确了。

    ue 模型都是使用顶点法线的方式渲染,不知道有没有方便的面法线的方式渲染。从通用的mesh类中 是没看见。也许有,现在没找到,哪位仁兄知道 可以告知下。

     顶点法线和面法线,渲染对象,是不同的。在平面立方体这种,会带来数据量的增加;但是渲染弧面的情况下,可以在更少的 顶点数据量下,渲染出好很多的平滑效果, 因为顶点之间的面,渲染效果,可以根据顶点法线,插值得到。这样原本的平面三角,可以渲染为弧面。

  

没有更多推荐了,返回首页