collision_data - ryzom/ryzomcore GitHub Wiki


title: Collision Data Generation (2001) description: Specification for generating collision data for the Ryzom world — surfaces, simple objects, buildings, and vehicles published: true date: 2026-03-15T00:00:00.000Z tags: editor: markdown dateCreated: 2026-03-15T00:00:00.000Z

Translated from "fr 2001 3d collision_data". {.is-info}

Collision Data Generation for Ryzom

The Environment

The Solution

Surfaces

The logical representation of the environment is made of surfaces. A surface is a list of line segment chains. Surfaces are connected to other surfaces through a shared line segment between the two surfaces.

The landscape and building exteriors

The visual landscape can be transformed into a set of surfaces.

Fixed buildings placed in the landscape (e.g. the Brandon) have an exterior surface that is merged with the landscape surfaces during pre-computation.

A buildable zone lies strictly within a landscape surface. The exterior surface of buildings is merged at runtime with the landscape surface in which the buildable zone is located.

Building interiors

Each room of a building is a surface. Surfaces communicate through walkways (e.g. stairs, ladders, elevators).

All the rooms and walkways of a building have a single collision mesh. This mesh represents the surface on which one can walk, delimited by walls and static objects (tables, chairs). Each visible edge of the mesh represents an invisible wall of infinite height. Each face of the collision mesh has information such as:

  • Ceiling height.
  • Walkway membership and/or walkway parameters.

When the player moves within a room, it is always the surface collision system that controls their movement. When the player is on a walkway surface, this control is handled by code specific to the walkway type.

Constraints

Landscape

  • A landscape patch must not have walkable parts separated by non-walkable parts if those two parts overlap.
  • See later for Legoscape constraints.

Building exteriors

  • You cannot jump onto a building from the landscape.

Building interiors

  • A building has a single collision mesh.
  • The building's collision mesh is completely welded.
  • The visibility/invisibility of edges determines the position of invisible walls.
  • Ceiling height must be modified by flagging 3ds Max materials.

Responsibilities

Ben

  • Ben generates surfaces from the landscape.
  • Ben merges the exterior surfaces of static buildings with the landscape surfaces during pre-computation.
  • Ben codes the system for merging the external surfaces of buildable buildings with the surface in which the buildable zone is located at runtime.

3D Code

  • The 3D code exports the collision mesh for interiors and the external surfaces of buildings.
  • The 3D code creates the necessary tools for placing USER information in materials.

3D Artists

  • The 3D artists create the internal and external collision meshes for buildings.

Unassigned

  • Generates interior surfaces from the collision mesh exported from 3ds Max.
  • Codes the collision test algorithms on surfaces.

Simple Objects

The Solution

Simple objects can move (e.g. characters) or be static but appear on demand from game development (e.g. trees). They are therefore not taken into account in the surface pre-computation.

Examples of simple objects:

  • Characters
  • Elephants
  • Trees
  • Crates

Simple objects must have a set of simple collision envelopes to be tested efficiently against each other. These envelopes are applied, moved, and deformed in 3ds Max.

The available envelopes are:

  • Non-oriented cylinders.
  • Spheres.
  • Oriented boxes.

Constraints

  • The character's envelope must be a cylinder aligned on the origin so that characters can turn in corners.
  • The radius and length of cylinders can be modified.
  • The size and orientation of boxes can be modified.
  • The size of spheres can be modified.

Responsibilities

3D Code

  • The 3D code exports the collision envelopes.

3D Artists

  • The 3D artists create the collision envelopes for each object.

Vehicles

The Solution

Vehicles are buildings that move.

They have an exterior envelope like simple objects and an internal collision mesh like buildings.

⚠️ **GitHub.com Fallback** ⚠️