This article is used as a research study report for the summer vacation. Don’t take it seriously. Abstract This article gives an implementation plan of the simple Marching Cubes algorithm voxel mesh in Unreal Engine 4. It demonstrates the feasibility of the algorithm by generating a sphere with a "smooth" surface. sex. Keywords MarchingCubes UnrealEngine Grid Reconstruction Game Development Research Background "Minecraft" is one of the more popular games at the moment. Its voxel terrain system greatly improves the player's ability to modify the terrain, greatly improving the degree of freedom. Its voxel representation is It is based on cube rather than Mesh, which limits its ability to express surfaces.
作者: _Redstone_c_
This article is used as a research study report during the summer vacation. This article provides a simple construction model of a network threat capture and deception system based on HFish, and uses this system to capture some of the network attacks on the Internet today. Through these data, simple Comprehensive analysis reveals potential threats in the network. Keywords Network security hacker attack Network attack and defense Password deciphering Research background As a website owner of a small personal website, you may not feel that your website is being scanned and attacked, but in fact, there are many potential threats on the Internet. The website is in the open and potential threats are in the dark. It is not easy to conduct qualitative and quantitative analysis of potential threats. Therefore, a threat capture and deception system is needed to capture potential threats by imitating the behavior of real websites.
Engine: UE4.26.2 build version The cause of the problem is that when writing the voxel builder, I wanted to generate a ball, so I thought of copying the SphereMask node of the material. Here we take the SphereMask node as an example to analyze the definition of the material blueprint node. The C++ parent class of UMaterialExpression material node is UMaterialExpression, which is defined in the MaterialExpression.h header file. All native material nodes are subclasses of this class. The main members of this class are as follows. virtual int32 Compile(class FMaterialCompil
The problem is that after upgrading from UE4.24 to UE4.26, I want to package Android. I delete the previous NDK and then install the new NDK according to the instructions on the official website. When packaging, it prompts that the packaging fails. The key content of the Log is as follows. UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): ====2021-08-09 14:35:59====PERFORMING FINAL APK PACKAGE OPERATION=====-armv7==== ================================
This is the assignment for the 2021 Shandong University Future Science Camp (Summer) - Artificial Intelligence and Invention and Creation Future Science Camp, so just take a look. Basic information name: Remote Intelligent Room Patrol Alarm Robot to solve the problem of long-term unoccupied homes/rooms, but there are equipment running or other Requirements require remote monitoring. It can conveniently remotely monitor the home environment and monitor the operating status of the equipment. It has good mobility and flexibility and can adapt to different room environments. Hardware connection diagram graph LR camera — Raspberry Pi ultrasonic sensor — expansion board 5-way component — expansion board Raspberry Pi — expansion board expansion board — motor drive board expansion board — speed measurement left expansion board —
Suppose we have a structure with the USTRUCT macro, and we want to be able to make or break in our own way in the blueprint. This requirement is usually because we use members in the structure that do not support reflection in C++. USTRUCT(BlueprintType, Meta = (HasNativeMake, HasNativeBreak)) struct FMeshVertex { GENERATED_BODY() UPROPERTY(EditAnywhere) FVector Position; UPROPERTY(EditAnyw
Establish Battlefield Control, Stand By — Battlefield control is established, please wait. Battle Control Online — Battle Control Online. Incoming Transmission — Signal input. New Objective Received — A new objective was received. Objective Complete — The task objective is completed. Mission Accomplished — Mission accomplished. Missi
Lengyel-VoxelTerrain.pdf
ParallelFor is UE's built-in For loop that supports multi-threaded parallel processing tasks and is quite commonly used in rendering systems. Calling method function signature void ParallelFor(int32 Num, TFunctionRef Body, bool bForceSingleThread, bool bPumpRenderingThread = false); void ParallelFor(int32 Num, TFunctionRef
UFUNCTION() virtual void FunctionName(…) PURE_VIRTUAL(ClassName::FunctionName, … );
CornerCoordOffset[8] – represents the mapping of vertex index to vertex space position. For example, CornerCoordOffset[0] = (0,0,0) means that the position of vertex -0 is (0,0,0). Triangulation[256][5][3] – represents triangle splitting. The triangle can be split by vertex status (through bit mask) to obtain the edge index corresponding to the triangle, such as Triangulation[2][0][0] = 0 Indicates that the first vertex of the first triangle is on edge -1 while vertex -0 is "inside" and the rest of the vertices are "outside".
Vertices = { { -50.0f, -50.0f, -50.0f }, { 50.0f, -50.0f, -50.0f }, { 50.0f, 50.0f, -50.0f }, { 50.0f, 50.0f, - 50.0f }, { -50.0f, 50.0f, -50.0f }, { -50.0f, -50.0f, -50.0f }, { -50.0f, -50.0f, 50.0f }, { 50.0f, -50.0 f, 50.0f }, { 50.0f, 50.0f, 50.0f
Written based on the Mermaid class diagram specification: Mermaid: Class diagrams "In software engineering, a class diagram in the Unified Modeling Language (UML) is a static structural diagram that displays the classes in a system and their properties and operations (or methods) plus the relationships between classes to describe the structure of the system." Wikipedia class diagrams are the main building blocks of object-oriented modeling. It can be used for conceptual modeling of the general structure of an application, as well as detailed modeling by converting the model into programming language code. Class diagrams can also be used for data modeling. The classes in a class diagram represent the main elements, interactions, and classes to be programmed in the application. Mermaid can render class diagrams. classDiagram A
InsideUE4 – Unreal C++ basics, GamePlay architecture. Hand-roll Unreal Engine – disassemble the Unreal engine source code and share some cool operations. Analyze the Unreal rendering system – Unreal rendering system, rendering pipeline, and multi-threading. C# and Shader Tutorials for the Unity Engine – Unity C# and shader system tutorials. GAMES series of courses – graphics, model reconstruction, physics engine and game engine.
Engine: UE4.26.2 build version StaticMesh, referred to as SM, represents the static mesh in the engine. In the new version of the engine, SM is also allowed to be built at runtime. Rendering an SM requires the support of SMC. SMC uses static/dynamic rendering. Path, static rendering paths will be used first if allowed, and all rendering commands will be cached. Class diagram UStaticMesh Class diagram classDiagram IInterface_AssetUserData <|.. UStaticMesh Interface_CollisionDataProvider
Engine: UE4.26.2 build version ProceduralMeshComponent, referred to as PMC, provides a procedural mesh component that can make renderable meshes through custom triangles, uses dynamic rendering paths, and collects rendering data at each frame without any data caching. Class Structure Game Class Diagram classDiagram Interface_CollisionDataProvider <|.. UProceduralMeshComponent FPrimitiveSceneProxy <|– FProceduralMeshScenePro
Multiplayer online chicken game. Multiplayer online jump battle. Multiplayer online bumper battle. Multiplayer online territory battle. Multiplayer online starburst battle. Multiplayer online alley battle. Multiplayer online pendulum battle. Multiplayer online. Online strategy battle. Multiplayer online pirate battle. Multiplayer online animal battle. Multiplayer online battleship battle. Multiplayer online physics battle. Multiplayer online zombie battle. Multiplayer online vegetable chopping battle. Multiplayer online car racing battle. Multiplayer online battle. Enclosure Battle Multiplayer Online Tank Battle Multiplayer Online Crash Battle Multiplayer Online Crash Battle Multiplayer Online Clash Battle Multiplayer Online Elimination Battle Multiplayer Online Air Combat Multiplayer Online Ax Battle Multiplayer Online Tank Big Battle Multiplayer Online Snake Battle
As we all know, UE4 prohibits RTTI, which results in incomplete support for dynamic_cast, which means that conversion from base class to subclass is not supported. However, when reading the TSoftObjectPtr (SoftObjectPtr.h) code, I saw: /** * Dereference the soft pointer. * * @return nullptr if this object is gone or the lazy pointer was null, otherwise a valid UObject point
Start logging status to file stat startfile Stop logging status to file stat stopfile Convenient scope timer can be used directly QUICK_SCOPE_CYCLE_COUNTER(STAT_ClassName_FunctionName); Declare status group DECLARE_STATS_GROUP(TEXT("Group Name"), STATGROUP_GroupName, STATCAT_Advanced); Declare counter DECLARE_DWORD_ACCUMULATOR_S
Results engine version 4.26.2 implements a UTexture2DArray wrapper. Supports texture array creation and modification at Runtime. Supports texture array MipMap (the official implementation only has layer 0 Mip). The rendering shows that this texture array has a total of 5 elements and 5 Mip levels. Among them, the horizontal direction is the element, and the vertical direction is the Mip level. CodeTexture2DArrayWrapper.h #pragma once #include "CoreMinimal.h" #include "UObject/Object.h&q
N North X+ S South X- E East Y+ W West Y- T Up Z+ B Down Z-
Performance Assertion failed: !FPaths::IsRelative(Dir) [File:/Engine/Source/Runtime/Projects/Private/ProjectDescriptor.cpp] [Line: 337] ../../../UGCExample/../RemappedPlugins / is not an absolute path. The solution is to modify line 143 of ProjectDescriptor.cpp: // If this is a pa
In order to prevent ICP information from being hard-coded, when I tried to modify the theme PHP code, I found that the theme comes with a bottom social menu, but the social menu will replace the menu items with images. This operation is completely done through CSS code, so you only need to customize it. Add the following CSS code to CSS to overwrite it. This code restores text display by resetting the social area's li a label settings. .social-menu li a { all: revert; all: unset; } .social-menu { display: -webkit-box; display: -ms-flexbox;
Portal
void AsyncTask(ENamedThreads::Type Thread, TUniqueFunction Function); General task thread: ENamedThreads::AnyHiPriThreadNormalTask General callback thread: ENamedThreads::GameThread
PRAGMA_DISABLE_OPTIMIZATION // Code PRAGMA_ENABLE_OPTIMIZATION
Original portal FRunnable & FRunnableThread FRunnable provides the most primitive thread support, similar to std::Thread, although not as elegant, but has slightly more functions than std::Thread FRunnable - carries business logic + [f] Init: initialization, can Failure+[f] Run: The thread runs the function and returns the exit code+[f] Stop: Terminates the thread early+[f] Exit: Cleans up before exit+[f] GetSingleThreadInterface: The platform does not support it
Native plug-in Adblock Plus – Universal ad blocker Adblock for Youtube™ – Youtube ad blocker Dark Reader – Adaptive dark theme Proxy SwitchyOmega – Network proxy intelligent control Tampermonkey – Oil monkey plug-in supports User-Agent Switcher and Manager – Fake client information Violentmonkey – Oil Monkey plug-in supports YouT
lli fac[maxn]; // factorial lli inv[maxn]; // inverse element lli invf[maxn]; // factorial of inverse element inline void init() { fac[0] = 1; for (lli i = 1 ; i < maxn; ++i) fac[i] = fac[i – 1] * i % mod; inv[1] = 1; for (lli i = 2; i < maxn; ++i) inv[i ] = inv[mod % i] * (mod – mod / i)
struct fenwick_tree_t { lli n; vector tre; fenwick_tree_t(lli n) : n(n), tre(n + 1, 0) { } lli lowbit(lli x) { return x & -x; } void build(lli* arr) { for (lli i = 1; i <= n; ++i) upd(i, arr[i]); } void upd(lli i, lli x) { for (; i
lli gcd(lli x, lli y) { return y ? gcd(y, x % y) : x; }
Use Tarjan algorithm lli fa[maxn]; lli dfn[maxn]; lli low[maxn]; bool cut[maxn]; void tarjan(lli u) { dfn[u] = ++cnt; low[u] = dfn[ u]; lli child = 0; for (lli i = 0; i < mp[u].size(); ++i) { lli v = mp[u][i]; if (!dfn[v]) { ++child; fa[v] = u; tarjan(v);
std::chrono::system_clock::time_point bt = std::chrono::system_clock::now(); std::chrono::system_clock::time_point et = std::chrono::system_clock::now(); std::chrono::nanoseconds dt = std::chrono::duration_cast (et – bt
[Luogu] lli dsu[maxn]; lli dis[maxn]; lli num[maxn]; void init_dsu() { for (lli i = 0; i < maxn; ++i) dsu[i] = i; for (lli i = 0; i < maxn; ++i) dis[i] = 0; for (lli i = 0; i < maxn; ++i) num[i] = 1; } lli find_dsu(lli x) { if (dsu[x] == x) r
It is agreed that the edge storage method is a directed edge from the left to the right, and the left and right point numbers are the same. Hungarian algorithm lli mch[maxn]; lli vis[maxn]; bool dfs_hun(lli u, lli dfn) { if (vis[u ] == dfn) return false; vis[u] = dfn; for (lli i = head[u]; ~i; i = edge[i].nxt) { lli v = edge[i].v; if ( mch[v] == 0 || dfs_hun(mch[v], dfn)) { mc
The doubling idea is modified from doubling LCA lli mw[32][maxn]; lli fa[32][maxn]; lli dep[maxn]; void dfs_mw(lli u) { dep[u] = dep[fa[0][ u]] + 1; for (lli i = 1; (1 << i) <= dep[u]; ++i) fa[i][u] = fa[i – 1][fa[i – 1 ][u]]; for (lli i = 1; (1 << i) <= dep[u]; ++
lli n; lli arr[maxn]; lli lg[maxn]; lli st[maxn][32]; inline lli flg(lli x) { if (lg[x]) return lg[x]; lli tmp = x; lli res = 0; while (tmp) tmp >>= 1, ++res; return lg[x] = res – 1; } inline void init_st() { for (lli i = 1; i <= n; ++ i) st[
vector bucket(1000001); void bsort(vector & arr) { fill(bucket.begin(), bucket.end(), 0); for (int i = 0; i < arr.size(); ++i) ++bucket[arr[i]]; for (int i = 0, tot = 0; i < bucket.size(); ++i) for (int j = 1; j <= b
Luogu P1962 Fibonacci Sequence
Hard get UObjectLibrary* ObjectLibrary = UObjectLibrary::CreateLibrary(UUserDefinedStruct::StaticClass(), false, GIsEditor); ObjectLibrary->LoadAssetDataFromPath(TEXT("/Game")); TArray AssetDatas; ObjectLibrary->GetAssetD
Luogu P3379 [Template] Nearest common ancestor LCA Euler order + line segment tree int cnt; int dep[maxn]; int eoo[maxn]; int ooe[maxn << 1]; void dfs_ooe(int u, int f) { dep[u] = dep[f] + 1; ooe[++cnt] = u; eoo[u] = cnt; for (int i = head[u]; ~i; i = edge[i].nxt) { int v = edge[i].v; if (f ==
Solution [This code needs to be matched with the line segment tree] int cnt; int fa[maxn]; int dep[maxn]; int siz[maxn]; int son[maxn]; int rk[maxn]; int top[maxn]; int id [maxn]; inline void init_tree() { cnt = 0; } void dfs_ss(int u) { int ms = -1; int mss = 0; siz[u] = 1; for (int i = head[u]; ~i; i
#ifdef __cpp_if_constexpr template void read(T& x, Args&… r) { if constexpr (is_integral_v && !is_same_v , char>) { x = 0; lli f = 1; char ch = getchar(); while (!i
r.VolumetricFog.GridPixelSize Volume fog pixel size r.VolumetricFog.GridSizeZ Volume fog Z depth r.VolumetricFog.TemporalReprojection Time effect accumulation r.VolumetricFog.HistoryWeight Time effect accumulation length [frame] r.VolumetricFog.Jitter Jitter accumulation
I met the player you mentioned. (player name)? Yes. careful. He has now reached a higher state. He can read our thoughts. It doesn't matter. He thinks we are part of the game. I like this player. He played well. He didn't give up. He reads our thoughts in the form of words that appear on the screen. He always imagined all kinds of things in this way when he was deep in the dream of the game. Text creates a beautiful interface. Very flexible. And it’s less scary than staring into reality behind a screen. They too had heard voices. before the player can read it. People who don't play call players witches and warlocks. And the players dreamed that they were riding in a demon-powered
Multiplying a vector and a scalar s\mathtt a = (sa_x,sa_y,sa_z) does not change the direction of the vector, only the length. Addition and subtraction of vectors\mathtt a+\mathtt b = [(a_x+b_x),(a_y+b_y),(a_z+b_z)] Superimpose the two offsets, similar to the resultant force of the force. \mathtt a-\mathtt b = [(a_x-b_x),(a_y-b_y),(a_z-b_z)] is equivalent to adding the opposite of another vector. direction + direction = direction direction – direction = direction point + direction = point point –