This page has been translated automatically.
视频教程
界面
要领
高级
实用建议
UnigineEditor
界面概述
资产工作流程
设置和首选项
项目开发
调整节点参数
Setting Up Materials
Setting Up Properties
照明
Landscape Tool
Sandworm
使用编辑器工具执行特定任务
Extending Editor Functionality
嵌入式节点类型
Nodes
Objects
Effects
Decals
光源
Geodetics
World Nodes
Sound Objects
Pathfinding Objects
Players
编程
基本原理
搭建开发环境
Usage Examples
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Plugins
File Formats
Rebuilding the Engine Tools
GUI
双精度坐标
应用程序接口
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
创建内容
Content Optimization
Materials
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials
注意! 这个版本的文档是过时的,因为它描述了一个较老的SDK版本!请切换到最新SDK版本的文档。
注意! 这个版本的文档描述了一个不再受支持的旧SDK版本!请升级到最新的SDK版本。

Unigine::WorldOccluderMesh Class

Header: #include <UnigineWorlds.h>
Inherits from: Node

This class is used to create an occluder based on an arbitrary mesh, which culls surfaces, bounds of which are currently hidden behind it. If any part of the bound of the object's surface is visible behind the occluder, the surface will not be culled. The objects' surfaces behind the occluder are not sent to the GPU, thereby saving performance.

The occluder itself is rendered by the CPU and stored in a separate buffer.

Usage#

In order to enhance performance, occluders should be used wisely. The following notes will help you to decide whether to use the occluder or not:

  • Occluders can be highly effective in case of complex environments where there are many objects that occlude each other and are costly to render (they have a lot of polygons and/or heavy shaders).
  • Effective culling is possible if objects are not too large, since if any part of their surface is seen, it cannot be culled. In case objects are big and have a few surfaces, it is likely that an additional performance load of an occluder will not pay off.
  • In case the scene is filled with flat objects or a camera looks down on the scene from above (for example, in flight simulators), it is better not to use occluders at all or disable them.

See Also#

WorldOccluderMesh Class

Members


static WorldOccluderMeshPtr create ( ) #

Constructor. Creates a new world occluder mesh with the default distance value.

static WorldOccluderMeshPtr create ( const char * name ) #

Constructor. Creates a new world occluder mesh from the given *.mesh file.

Arguments

  • const char * name - A mesh file name.

void setDistance ( float distance ) #

Updates the distance between the camera and the bounding box of the occluder mesh, at which this occluder mesh becomes disabled (it isn't processed by the CPU, hence it isn't rendered). By default, the inf value is used.

Arguments

  • float distance - The distance in units.

float getDistance ( ) const#

Returns the current distance between the camera and the bounding box of the occluder mesh, at which this occluder mesh becomes disabled (it isn't processed by the CPU, hence it isn't rendered). By default, the inf value is used.

Return value

The distance in units.

bool setMesh ( const Ptr<Mesh> & mesh ) #

Allows for reinitialization of the occluder mesh: the function copies a given mesh into the current mesh used for the occluder mesh.

Arguments

  • const Ptr<Mesh> & mesh - A mesh to be copied.

Return value

true if the mesh is copied successfully; otherwise, false.

bool getMesh ( Ptr<Mesh> & mesh ) const#

Copies the current mesh, on which the occluder mesh is based, into the target mesh.

Arguments

Return value

true if the mesh is copied successfully; otherwise, false.

bool setMeshName ( const char * name, bool force_load = 0 ) #

Sets a new name for the mesh, on which the occluder mesh is based and forces loading of the mesh with the new name for the current occluder mesh.

Arguments

  • const char * name - A new name to be set for the mesh.
  • bool force_load - Force flag.
    • If true (1) is specified, the mesh with the new name will be loaded immediately.
    • If false (0) is specified, only the mesh name will be updated.

Return value

true (1) if:
  • The current mesh name coincides the new name.
  • The mesh with the new name has been loaded successfully.
  • The force flag is set to 0.
In other cases, false (0).

const char * getMeshName ( ) const#

Returns the name of the mesh, on which the occluder mesh is based.

Return value

Mesh name.

bool loadMesh ( const char * name ) #

Loads a mesh for the current occluder mesh from the file. This function doesn't change the mesh name.

Arguments

  • const char * name - The mesh file name.

Return value

true if the mesh is loaded successfully; otherwise, false.

bool saveMesh ( const char * name ) const#

Saves the mesh, on which the occluder mesh is based, into a file.

Arguments

  • const char * name - The mesh file name.

Return value

true if the mesh is saved successfully; otherwise, false.

static int type ( ) #

Returns the type of the node.

Return value

World type identifier.
Last update: 2021-12-13
Build: ()