(个人)VR实时交互的太极拳学习系统创新实训第二周(1)

主要工作:

            本周完成的第一个工作是完成了材质,系统进入界面和动画的制作。


工作介绍:

       1.首先创建一个空的关卡:名字取为start

                

            

              2.进行地形的搭建,这里的材质制作采用了多材质混合的方法。具体步骤如下:

               


a.创建一个材质球,为了方便识别取名为m_Mont:

                                     

b.利用LandscapeLayerWeight方法进行Texture的融合。base表示被添加的对象,Layer表示要添加的层对象,LandscapeLayerCoords(景观层坐标)用来生成UV坐标,这个坐标是将材质网络映射到地形地貌上。


c.将这个材质球赋给landscape.可以看到在地貌-描画-窗口看到添加上去的材质,这时的材质会发现还无法使用,需要点击加号创建层信息,一般选择权重法向那个,之后就会发现生成了地貌层信息文件,这样材质才可以开始使用:




d.使用时需要那个材质就点击那个材质用描画工具在landscape上进行操作,最终结果图:


3.进行水面材质的制作:为了让水面达到一种波光鳞里的效果,需要对材质进行重复偏移。下面是具体操作步骤:

a .将材质类型改为Translucent

b.在基础色上添加自己想要的水面颜色:


c.为了制造波光粼粼的效果,添加法线方向的偏移,获取系统的时间,利用Panner控制UV的偏移速度,选择一张高度贴图,可以产生动态效果:


d.之后设置反射光和折射光,lerp实现线性过渡,Feature Level Switch方法,输出参数为5个,下面表示的是四种不同的设备,是为了保证在不同的设备上都可以平滑过渡。:


e.看一下总的:

 
 
#include "CoreMinimal.h"
#include "UObject/ObjectMacros.h"
#include "Misc/Guid.h"
#include "RenderCommandFence.h"
#include "Materials/MaterialInterface.h"
#include "StaticParameterSet.h"
#include "MaterialShared.h"
#include "Materials/MaterialExpressionMaterialFunctionCall.h"
#include "Materials/Material.h"
#include "Materials/MaterialInstanceBasePropertyOverrides.h"
#include "Misc/App.h"
#include "MaterialInstance.generated.h"

class ITargetPlatform;
class UPhysicalMaterial;
class USubsurfaceProfile;
class UTexture;

 
 
UCLASS(abstract, BlueprintType,MinimalAPI)
USTRUCT(BlueprintType)
struct FTextureParameterValue
{
	GENERATED_USTRUCT_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=TextureParameterValue)
	FName ParameterName;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=TextureParameterValue)
	class UTexture* ParameterValue;

	UPROPERTY()
	FGuid ExpressionGUID;


	FTextureParameterValue()
		: ParameterValue(NULL)
	{
	}


	typedef const UTexture* ValueType;
	static ValueType GetValue(const FTextureParameterValue& Parameter) { return Parameter.ParameterValue; }
};


USTRUCT(BlueprintType)
struct FVectorParameter
{
	GENERATED_USTRUCT_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=VectorParameterValue)
	FName ParameterName;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=VectorParameterValue)
	FLinearColor ParameterValue;

	UPROPERTY()
	FGuid ExpressionGUID;


	FVectorParameterValue()
		: ParameterValue(ForceInit)
	{
	}


	typedef FLinearColor ValueType;
	static ValueType GetValue(const FVectorParameterValue& Parameter) { return Parameter.ParameterValue; }
};




4.进行UI界面的制作:

a.创建一个用户交互控件:


b.简单做出一个demo:



c.button上的字体是在button上增加text产生的。


d.绑定button的触发事件,利用Execute Console Command方法,实现退出,Open Level方法实现关卡的切换:


e.在关卡蓝图中添加该控件,才可以显示出来,利用show Mouse Cursor方法,让鼠标在UI时显示出来,Set Input Mode UI Only 可以将用户的操控控制在UI上面,无法进行其他操作:


以上就是这周前半周的工作。接下来会制作Matinee过场动画和摄像机动画,完成进入关卡。


猜你喜欢

转载自blog.csdn.net/little_raspberry/article/details/79916004