This page has been translated automatically.
Video Tutorials
Interface
Essentials
Advanced
How To
Rendering
Professional (SIM)
UnigineEditor
Interface Overview
Assets Workflow
Version Control
Settings and Preferences
Working With Projects
Adjusting Node Parameters
Setting Up Materials
Setting Up Properties
Lighting
Sandworm
Using Editor Tools for Specific Tasks
Extending Editor Functionality
Built-in Node Types
Nodes
Objects
Effects
Decals
Light Sources
Geodetics
World Nodes
Sound Objects
Pathfinding Objects
Players
Programming
Fundamentals
Setting Up Development Environment
Usage Examples
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Plugins
File Formats
Materials and Shaders
Rebuilding the Engine Tools
GUI
VR Development
Double Precision Coordinates
API
Animations-Related Classes
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
VR-Related Classes
Content Creation
Content Optimization
Materials
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials
Warning! This version of documentation is OUTDATED, as it describes an older SDK version! Please switch to the documentation for the latest SDK version.
Warning! This version of documentation describes an old SDK version which is no longer supported! Please upgrade to the latest SDK version.

CPP SIM Samples

Warning
The functionality described in this article is not available in the Community SDK edition.
You should upgrade to Sim SDK edition to use it.

This demo contains a set of samples addressing the specific needs.

Rope#

This set of samples demonstrates how to create ropes using an arbitrary set of points and joints between them. This approach can be used to create any kind of rope or even a net consisting of a number of ropes, a wire, or a primitive cloth.

You can use the sample ropes as a basis for your specific task by configuring their parameters as required.

Indices for segments are generated randomly to avoid a linear accumulation of error in joints.

Crane#

This sample demonstrates how to imitate a crane with sling ropes transferring an object. The scene contains the manipulator with the ropes connected to it. Ropes are also connected to the load, which has BodyRigid assigned. The connection points are set via AttachPoint.

You can move the load around the scene by dragging the manipulator with the mouse, and make it interact with the wall also available in the scene.

Physics is simulated at 120 fps with 10 iterations to adjust the distance between points.

The physics update for the load is adjusted by impulses to ensure proper interaction with the environment.

Wires#

This sample illustrates how to create wires using the RopeSystem component. You can change the wire diameter value and generate a wire mesh based on a new value. The plane available in the scene can be moved to make the wires swing.

Simulating wires doesn't require a big number of physics iterations and fps, as they don't move across the scene, only swing. However, if wires in your scene are used mostly for decorative reasons and do not require any physical response, consider using a static mesh to save performance.

SSLSocket#

This sample illustrates the implementation of message exchange with a server through an SSL connection.

It contains two windows: one representing the server, and the other one — the client.

To exchange messages, you need to run the server first (click the Run button in the Server window), then connect the client (use the Connect button in the Client window). Then you can type messages in the message areas and click Send.

Vehicle#

This sample showcases a new High-Level Car Physics System. To learn more on using the system to create your own wheeled vehicle simulation please refer to this article.

Features#

  • Setting engine's power and resistance curves, as well as idle speed (RPM).
  • Gearbox simulation (manual and automatic) enabling you to adjust throttle and speed values for shifting gears along with transition time, as well as to set the number of gears and configure gear ratios.
  • Mathematical wheel model for more realistic steering, enabling simulation of forces affecting the rotating wheel, along with an ability to adjust suspension travel distance, spring, and damping values.
  • Easy setup of steering and driving axes along with capability to turn the differential lock on and off.
  • Switching between different views (driver's view, external camera, etc.).
  • Simulation of various surface conditions (such as dry, wet, snow-covered, or icy road, mud, and so on).
  • A set of debug windows displaying information on all vehicle parameters in real time.

Fine-Tuning the Wheel Joystick#

If you use a wheel device, you might need to readjust the demo settings to control the vehicle properly.

  1. Run the demo and press F3 to visualize the axes.
  2. Check the controls status — which axis each control corresponds to.
  3. If the controls mismatch, open the demo project in UnigineEditor to reconfigure them. Find the joystick_input node, it has the car_joystick_input property assigned. Adjust the Joystick Axis parameter where required.

Accessing Demo Source Code#

You can study and modify the source code of this demo to create your own projects. To access the source code do the following:

  1. Find the CPP SIM Samples demo in the Demos section and click Install (if you haven't installed it yet).
  2. After successful installation the demo will appear in the Installed section, and you can click Copy as Project to create a project based on this demo.
  3. In the Create New Project window, that opens, enter the name for your new project in the corresponding field and click Create New Project.
  4. Now you can click Open Code IDE to check and modify source code in your default IDE, or click Open Editor to open the project in the UnigineEditor.
Last update: 2023-12-19
Build: ()