3d Rad Exporter Plugin May 2026
Writing a 3D Rad Exporter Plugin is an exercise in technical archeology and pragmatic software engineering. It requires the developer to act as a bridge between a modern, node-based, physically accurate content creation environment and a legacy, fixed-function, real-time engine. The plugin must perform geometric transformation baking, vertex optimization, material heuristic mapping, binary serialization, and texture conversion—all within the constraints of a user-friendly interface. While 3D Rad itself is no longer actively developed, the creation of such exporters preserves the ability to use legacy projects and teaches timeless lessons about data interchange, binary formats, and the core principles of real-time rendering. For any developer undertaking this task, the ultimate reward is seeing a complex Blender or Maya model appear, correctly textured and lit, inside the 3D Rad viewport—a testament to the enduring power of custom tooling.
This is the most common version of the exporter, designed to bridge SketchUp models to the 3D Rad engine.
: Converts SketchUp geometry into DirectX (.x) files that 3D Rad can import as rigid bodies or skinmeshes. Installation The plugin usually comes as an For SketchUp 2016 and later, it is typically placed in the folder found in the user's AppData directory (e.g.,
C:\Users\(Username)\AppData\Roaming\SketchUp\SketchUp 2016\SketchUp\Plugins
: Once installed, an "Extensions" or "3D Rad" menu option appears in SketchUp, allowing you to select "Export as generic DirectX file". Blender Exporter Plugin
A dedicated script also exists for Blender users to prepare assets for 3D Rad. Capabilities : Can export meshes, rigid bodies, and even animations. Installation
: Involves placing an executable in the 3D Rad installation directory and installing a script via Blender's plugin manager. Key Detail 3d rad exporter plugin
: When exporting animations, it may output them in a sequential mesh format (e.g., ) rather than a single combined model. Common Alternatives & Troubleshooting FragMOTION : If direct plugins fail, many users use fragMOTION
as an intermediary to import OBJ files and export them as the specific DirectX files required by 3D Rad. Texture Issues
: Users sometimes report texture mapping problems when exporting directly from SketchUp Free/Make, occasionally requiring secondary tools like ZbylsXExporter for better results. download link
Since 3D Rad is legacy software (development ceased around 2013) and lacks the active ecosystem of modern engines like Unity or Unreal, "exporter plugins" are typically custom C++ DLLs or wrapped file interpreters that translate data from a specific format into something 3D Rad can read at runtime.
Below is a comprehensive guide on how to create a 3D Rad Exporter Plugin. This guide assumes you are trying to bridge a modern 3D tool (like Blender) or a custom format into 3D Rad.
Before export, the plugin validates the mesh integrity. Writing a 3D Rad Exporter Plugin is an
The proprietary .rad output is an ASCII or binary file structure organized hierarchically.
Structure Overview:
HEADER Version: 3.1 Units: cm Global_Offset: [x, y, z]MATERIAL_LIB Mat_01 Name: "Concrete", Density: 2.3, Z_Eff: 14 Mat_02 Name: "Steel", Density: 7.8, Z_Eff: 26
GEOMETRY_HIERARCHY Volume_001 Type: Mesh Material: Mat_02 Vertices: [...] Triangles: [...] Transform: [Matrix 4x4]
Unlike flat STL exports, the 3D RAD Exporter maintains the scene graph. If a "Room" object contains a "Table" object, the RAD file reflects this hierarchy. This allows the simulation engine to perform efficient spatial partitioning (Bounding Volume Hierarchies), significantly speeding up ray-tracing calculations. Before export, the plugin validates the mesh integrity
For this example, let's assume you are exporting a simple text-based mesh format (like OBJ) or a custom JSON format.
1. Define your Data Structures You need to mimic how 3D Rad sees geometry.
struct Vertex
float x, y, z;
;
struct Face
int v1, v2, v3; // Indices
;
class MeshData
public:
std::vector<Vertex> vertices;
std::vector<Face> faces;
// Function to load data
bool LoadFromCustomFile(const char* filename)
// Implementation: Open file, parse lines, push_back to vectors
// ...
return true;
;
2. Implement the Loading Logic
Inside your LoadFromCustomFile function, use std::ifstream to read the file.
Instead of a runtime DLL, write a Console Application that:
However, if you want to manipulate vertices at runtime (e.g., a deformation plugin), you use the iObject bindings within the AngelScript environment.
Current Limitations: