3DCoat Core API
The 3DCoat API documentation.
No Matches

This example generates the freeform primitive (cube)

// This example generates the freeform primitive (cube)
#include <CoreAPI.h>
using namespace coat;
class ffCube:public BaseClass {
ffCube() {
RadiusVariation = 30;
float RadiusVariation;
// this is class registration, look dialogs example
FSLIDER(RadiusVariation, "%RadiusVariation", 1, 100, 30, false);
// generate random value with variation
float random(float variation) {
return (1.0f + variation * comms::cMath::Rand(1, 100) / 100.0f);
void generate() {
auto current = coat::Scene::sculptRoot().addChild("Cube"+coat::str::ToString(voxId));
auto volume = current.Volume();
// turn to surface
// create the cube3x3 free form object
freeform ff("Cube","Cube3x3");
freeform::Points3D points = ff.ffControlPoints();
// modify the point's
int N = ff.CountPoints();
for(int i = 0; i < N; i++){
vec3 P = points[i];
vec3 VN = P;
vec3 P1 = P + VN * random(RadiusVariation);
int main() {
// get to sculpt room
// create the generator object
ffCube fg;
// load generator settings if exist
if(dlg.caption("Free Cube").ok().cancel().params(&fg).show() == 1) {// ok pressed, buttons start from 1
// save settings
// generate the ffcube
return 0;
Use this class for build a class for UI or serialization. see class_reg.h for details about the class...
Definition BaseClass.h:91
int childCount() const
returns the child elements count
SceneElement addChild(const char *name) const
add the child element of the same nature
static SceneElement sculptRoot()
get the root of all sculpt objects
the rich dialog. You may customize it, show your custom parameters and custom buttons.
Definition CoreAPI.h:3641
dialog & params(BaseClass *params)
The important core feature. BaseClass allows to create the custom controls in the dialog....
dialog & ok()
add Ok button
dialog & cancel()
add Cancel button
int show()
pass the function/lambda that will be called when the button will be pressed. The button index (start...
dialog & caption(const char *id)
pass the caption of the dialog
freeform primitive
Definition CorePrimAPI.h:3880
Points3D & ffControlPoints()
get the knot(control) points of the primitive.
freeform & SetPoint(int i, const vec3 &point)
set the knot point of the primitive.
int CountPoints() const
get the account of the knot points
prim & details(const float det_level)
set the detail level
void add(Volume &v)
add the prim into scene
static void toRoom(const char *name, bool Force=false)
switch to the room
The coat namespace used for most 3DCoat API calls except low-level internal structures.
Definition CoreAPI.h:43
comms::cVec3 vec3
3D - float vector, see the cVec3
Definition CoreAPI.h:50