大家好!我寫了一個教程已經有一段時間了。在本文中,我們將研究虛幻引擎4.您可以在此處了解有關Unreal以及如何安裝虛幻引擎4的更多信息。我非常喜歡Unreal的圖形質量。它的圖形質量無與倫比,可以免費使用!那么,讓我們開始吧!
您還需要安裝VisualStudio(Windows)或XCode(Mac)。這些程序可能在安裝時帶有Unreal,但如果沒有,請確保安裝它。
一旦安裝了虛幻引擎和VisualStudio或XCode,就可以啟動最新版本的Unreal和啟動C ++項目。目前,我們不需要擔心Blueprint& C ++項目。選擇一個基本模板。
這個過程需要一些時間。完成后,它將如下所示。如果選擇了C ++項目,則可以在左下角的內容瀏覽器中看到名為C ++類的文件夾。在左側,您有模式窗口,您可以從中選擇不同的默認3D模型和其他組件。玩它。您的VisualStudio或XCode也必須同時打開。
在Unreal中,所有對象都被視為Actors,輸入被視為Pawn等等。由于我們正在制作自己的3D模型,因此我們需要有一個actor類。
右鍵單擊內容窗口,然后選擇一個新的C ++類。將其擴展為演示類。
導航到Visual Studio。 (如果您在Blueprint類中創建actor,它將自動打開Visual Studio。)您可以在Solution Explorer窗口中瀏覽您的類。
我們將使用 UProceduralMeshComponent 來構建網格。網格是用于制作演示或對象的結構。導航到 Build.cs文件并添加以下行。
PublicDependencyModuleNames.AddRange(new string[] { “Core”, “CoreUObject”, “Engine”, “InputCore”, “ProceduralMeshComponent”, “ShaderCore”, “RenderCore” , “RHI”});
注意:如果在任何時候出現錯誤,您可以隨時關閉VisualStudio并轉到文件資源管理器中的項目文件夾。右鍵單擊。 uproject 并選擇生成項目文件。如果編譯器發出錯誤,我們需要這樣做。 (但如果錯誤是因為‘;’),這無濟于事。
現在,再次打開VisualStudio。瀏覽actor類的頭文件(.h)。在底部但在大括號下添加以下代碼。
private:
UPROPERTY(VisibleAnywhere, Category = Materials)
class UProceduralMeshComponent* mesh;
可能會顯示錯誤 - 您知道解決方案。
現在在你演示的 .cpp類。包括UProcedural頭類。
#include “ProceduralMeshComponent.h”
現在,使用三角形或面生成網格。你可以拿任何物件。在其他情況下,您會注意到它由許多三角形或面組成。
要創建網格,我們需要頂點,三角形(或面),法線,紋理,顏色和切線。您可以在文檔中閱讀有關它們的所有信息。
現在,您可以想象對象中三角形的數量取決于頂點的數量。如果3有頂點,則將有1個三角形。如果有4個頂點,那么你將有2個三角形。我們也需要牢記這些。
這次我們正在制作一個廣場。您可以將此代碼添加到A ()函數中的。 cpp文件。
mesh = CreateDefaultSubobject(TEXT(“mesh”));
RootComponent = mesh;
TArray vertices;
vertices.Add(FVector(0, 0, 0)); // 0th vertice
vertices.Add(FVector(0, 100, 0)); // 1th vertice
vertices.Add(FVector(0, 0, 100)); // 2nd vertice
vertices.Add(FVector(0, 100, 100)); // 3rd vertice
TArray Traingle;
//I have created 4 triangle because we need to make sure it is rendered from behind as well. Otherwise, the object will be seen from front only and not from behind.
Traingle.Add(0);
Traingle.Add(1); // for front face - clockwise direction
Triangle.Add(2);
Triangle.Add(1);
Triangle.Add(2); // for front face - clockwise direction
Triangle.Add(3);
Triangle.Add(2);
Triangle.Add(1); // for back face - anti-clockwise direction
Triangle.Add(0);
Triangle.Add(3);
Triangle.Add(2); // for back face - anti-clockwise direction
Triangle.Add(1);
TArray normals;
normals.Add(FVector(1, 0, 0));
normals.Add(FVector(1, 0, 0));
normals.Add(FVector(1, 0, 0)); // you need to calculate the direction of normals, using 3d vectors.
normals.Add(FVector(1, 0, 0));
TArray UV0;
UV0.Add(FVector2D(1, 1));
UV0.Add(FVector2D(0, 1));
UV0.Add(FVector2D(1, 0));
UV0.Add(FVector2D(0, 0));
TArray vertexColors;
vertexColors.Add(FLinearColor(0.75, 0.00, 0.00, 1.0));
vertexColors.Add(FLinearColor(0.75, 0.00, 0.00, 1.0));
vertexColors.Add(FLinearColor(0.75, 0.00, 0.75, 1.0)); // the 4th argument determines alpha value (0,1)
vertexColors.Add(FLinearColor(0.75, 0.00, 0.75, 1.0));
TArray tangents;
tangents.Add(FProcMeshTangent(0, 1, 0));
tangents.Add(FProcMeshTangent(0, 1, 0));
tangents.Add(FProcMeshTangent(0, 1, 0));
tangents.Add(FProcMeshTangent(0, 1, 0));
mesh-》CreateMeshSection_LinearColor(1, vertices, Square, normals, UV0, vertexColors, tangents, false);
我們的網格創建到此結束!您可以保存并編譯它。現在,如果你在場景中拖動你的演員,它將編譯一個正方形!
您可以嘗試評論其他2個三角形并進行編譯。一個廣場仍然會出現,但試著從后面看到它。你將無法做到。
現在,如果您向其添加任何材質(或圖像),如果它被顛倒或以其他方式渲染或光線較低。您需要在Triangle TArray和Normals中調整頂點位置。
您可以嘗試制作更復雜的模型或使用obj文件。你需要為obj模型創建一個解析器來獲取頂點,法線等。你需要知道一件事,那就是Texures = UV。使用該解析器,您可以填充值并獲得這樣的模型。
-
3D模型
+關注
關注
1文章
72瀏覽量
15686 -
虛幻引擎
+關注
關注
0文章
14瀏覽量
4061
發布評論請先 登錄
相關推薦
評論