added more comments

This commit is contained in:
Harvey Fong 2025-04-17 22:12:22 -06:00
parent 8549802c06
commit 5f03fc45bf

View File

@ -7,24 +7,29 @@
#include "../bella_engine_sdk/src/bella_sdk/bella_engine.h" // For rendering and scene creation in Bella #include "../bella_engine_sdk/src/bella_sdk/bella_engine.h" // For rendering and scene creation in Bella
#include "../bella_engine_sdk/src/dl_core/dl_main.inl" // Core functionality from the Diffuse Logic engine #include "../bella_engine_sdk/src/dl_core/dl_main.inl" // Core functionality from the Diffuse Logic engine
#include "../oom/oom_license.h" // common misc code
#include "../oom/oom_bella_long.h" // common misc code // oomer's helper utility code to make main cpp smaller
#include "../oom/oom_bella_engine.h" // common misc code #include "../oom/oom_license.h" // oomer's helper code for licenses
#include "../oom/oom_bella_premade.h" // common misc code #include "../oom/oom_bella_long.h" // more oomer's helper code for bella, but has long data
#include "../oom/oom_bella_misc.h" // common misc code #include "../oom/oom_bella_engine.h" // oomer's helper code for bella rendering
#include "../oom/oom_bella_premade.h" // oomer's helper code for bella scenes
#include "../oom/oom_bella_misc.h" // oomer's hlper code for bella misc code
//============================================================================== //==============================================================================
// GLOBAL VARIABLES AND FUNCTIONS // GLOBAL VARIABLES AND FUNCTIONS
//============================================================================== //==============================================================================
// Vec3 is a simple struct that holds a 3D vector
struct Vec3 { struct Vec3 {
float x, y, z; float x, y, z;
}; };
// BoundingBox is a simple struct that holds a bounding box
struct BoundingBox { struct BoundingBox {
Vec3 min; Vec3 min;
Vec3 max; Vec3 max;
// getCenter is a simple function that returns the center of the bounding box
Vec3 getCenter() const { Vec3 getCenter() const {
return { return {
(min.x + max.x) * 0.5f, (min.x + max.x) * 0.5f,
@ -33,6 +38,7 @@ struct BoundingBox {
}; };
} }
// getRadius is a simple function that returns the radius of the bounding box
float getRadius() const { float getRadius() const {
Vec3 center = getCenter(); Vec3 center = getCenter();
@ -55,7 +61,7 @@ int DL_main(dl::Args& args) {
BoundingBox bbox = {{1000000.0f, 1000000.0f, 1000000.0f}, // min point BoundingBox bbox = {{1000000.0f, 1000000.0f, 1000000.0f}, // min point
{-1000000.0f, -1000000.0f, -1000000.0f} }; // max point {-1000000.0f, -1000000.0f, -1000000.0f} }; // max point
// Always put this before args to setup callbacks for Bella's log events
int s_oomBellaLogContext = 0; int s_oomBellaLogContext = 0;
dl::subscribeLog(&s_oomBellaLogContext, oom::bella::log); dl::subscribeLog(&s_oomBellaLogContext, oom::bella::log);
dl::flushStartupMessages(); dl::flushStartupMessages();
@ -73,14 +79,15 @@ int DL_main(dl::Args& args) {
args.add( "pm", "printMatrix", "", "print matrix4"); args.add( "pm", "printMatrix", "", "print matrix4");
args.add( "em", "eachmaterial", "", "each voxel has own material"); args.add( "em", "eachmaterial", "", "each voxel has own material");
args.add( "sv", "scalevoxel", "", "each voxel has own scale"); args.add( "sv", "scalevoxel", "", "each voxel has own scale");
args.add( "cv", "colorvariation", "", "adsd color variation");
if (args.helpRequested()) { if (args.helpRequested()) {
std::cout << args.help("poomer-efsw © 2025 Harvey Fong","", "1.0") << std::endl; std::cout << args.help("poomer-bella-sine (C) 2025 Harvey Fong","", "1.0") << std::endl;
return 0; return 0;
} }
if (args.have("--licenseinfo")) { if (args.have("--licenseinfo")) {
std::cout << "poomer-efsw © 2025 Harvey Fong" << std::endl; std::cout << "poomer-bella-sine (C) 2025 Harvey Fong" << std::endl;
std::cout << oom::license::printLicense() << std::endl; std::cout << oom::license::printLicense() << std::endl;
return 0; return 0;
} }
@ -101,17 +108,25 @@ int DL_main(dl::Args& args) {
if (args.have("--scale")) { argScale = std::stod(args.value("--scale").buf()); } if (args.have("--scale")) { argScale = std::stod(args.value("--scale").buf()); }
int argModulus = 10; int argModulus = 10;
if (args.have("--modulus")) { argModulus = std::stoi(args.value("--modulus").buf()); } if (args.have("--modulus")) { argModulus = std::stoi(args.value("--modulus").buf()); }
float argColorVariation = 0.55f;
if (args.have("--colorvariation")) { argColorVariation = std::stof(args.value("--colorvariation").buf()); }
// Create a Bella Engine instance and load the default scene definitions ( all the nodes )
dl::bella_sdk::Engine engine; dl::bella_sdk::Engine engine;
engine.scene().loadDefs(); engine.scene().loadDefs();
// Create an engine observer that we subscribe to catch Engine event callbacks
oom::bella::MyEngineObserver engineObserver; oom::bella::MyEngineObserver engineObserver;
engine.subscribe(&engineObserver); engine.subscribe(&engineObserver);
// Get the scene
auto belScene = engine.scene(); auto belScene = engine.scene();
// use oom helper to populate the scene with default voxel objects // use oom helper to populate the scene with default voxel objects
// this returns a tuple of the world node, the mesh voxel node, the liquid voxel node, and the voxel node // this returns a tuple of the world node, the mesh voxel node, the liquid voxel node, and the voxel node
// The latter 3 are unparented, and the world node is parented to the scene root // The latter 3 are unparented, and the world node is parented to the scene root
// This is a convenience function, see oom_bella_premade.h for more details
auto [ belWorld, auto [ belWorld,
belMeshVoxel, belMeshVoxel,
belLiqVoxel, belLiqVoxel,
@ -126,7 +141,15 @@ int DL_main(dl::Args& args) {
belVoxelMat1["color"] |= belColor1.output("outColor"); belVoxelMat1["color"] |= belColor1.output("outColor");
belVoxelMat2["color"] |= belColor2.output("outColor"); belVoxelMat2["color"] |= belColor2.output("outColor");
// belColor["variation"] = 0.3f; // Uncomment to add color variation if (args.have("--colorvariation")) {
dl::logCustom("Color variation: %f", argColorVariation);
belColor1["variation"] = argColorVariation;
belColor2["variation"] = argColorVariation;
}
if (args.have("--eachmaterial")) {
dl::logCustom("Outputing a separate material for each voxel");
}
for (int i = 0; i < argNumPlotPoints; i+=1) { for (int i = 0; i < argNumPlotPoints; i+=1) {
auto eachVoxel = belScene.createNode("xform", dl::String::format("eachVoxelXform%04d",i)); auto eachVoxel = belScene.createNode("xform", dl::String::format("eachVoxelXform%04d",i));
@ -145,11 +168,9 @@ int DL_main(dl::Args& args) {
dl::Mat4 myXform = dl::Mat4::identity; dl::Mat4 myXform = dl::Mat4::identity;
dl::Mat4 myTranslate = dl::Mat4::identity; dl::Mat4 myTranslate = dl::Mat4::identity;
dl::Mat4 myScale = dl::Mat4::identity; dl::Mat4 myScale = dl::Mat4::identity;
// Uncomment to get double scale
//dl::Mat4 myScale = dl::math::makeScale<4>(2.0,2.0,2.0);
// Calculate the position of each point in the sine wave // Calculate the position of each point in the sine wave
double myX = i*1.0; double myX = i;
double myY = 0.0; double myY = 0.0;
double myZ = argZOffset + argSineAmpl * sin(argSineFreq * i); double myZ = argZOffset + argSineAmpl * sin(argSineFreq * i);
@ -166,6 +187,7 @@ int DL_main(dl::Args& args) {
// Override scale above if arg is passed // Override scale above if arg is passed
if (args.have("--scalevoxel")) { if (args.have("--scalevoxel")) {
dl::logCustom("Scale voxel: %f", (i%argModulus+5)*0.5);
myScale = dl::math::makeScale<4>( (i%argModulus+5)*0.5, myScale = dl::math::makeScale<4>( (i%argModulus+5)*0.5,
(i%argModulus+5)*0.5, (i%argModulus+5)*0.5,
(i%argModulus+5)*0.5); (i%argModulus+5)*0.5);