Logo by Cyclops - Contribute your own Logo!

END OF AN ERA, FRACTALFORUMS.COM IS CONTINUED ON FRACTALFORUMS.ORG

it was a great time but no longer maintainable by c.Kleinhuis contact him for any data retrieval,
thanks and see you perhaps in 10 years again

this forum will stay online for reference
News: Did you know ? you can use LaTex inside Postings on fractalforums.com!
 
*
Welcome, Guest. Please login or register. September 22, 2019, 03:14:52 PM


Login with username, password and session length


The All New FractalForums is now in Public Beta Testing! Visit FractalForums.org and check it out!


Pages: [1]   Go Down
  Print  
Share this topic on DiggShare this topic on FacebookShare this topic on GoogleShare this topic on RedditShare this topic on StumbleUponShare this topic on Twitter
Author Topic: Mandelbulber v2 - 2.06  (Read 3420 times)
0 Members and 1 Guest are viewing this topic.
Buddhi
Fractal Iambus
***
Posts: 895



WWW
« on: November 30, 2015, 06:12:34 PM »

Mandelbulber v2 2.06

Free download (executables for win32 and win64, OSX and multiplatform source): http://sourceforge.net/projects/mandelbulber/
https://github.com/buddhi1980/mandelbulber2

Together with zebastian, mclarekin and bermarte we have finished new version of Mandelbulber.
This time main focus was on implementation of command line interface (for headless systems) and queue tool


What is new?

- Added Command Line Interface, which allows application to run on headless systems. From simple terminal (e.g. ssh session) it is possible to render still images and animations and also launch NetRender client or server. Full list of available options can be listed using --help option.
- Added Queue feature to manage collection of settings which can be rendered automatically in background.
- Added Italian language (thanks to bermarte)
- Added use of SHIFT button to select between orthogonal or 45 degree strafe in flight animation recording.
- Added + and - buttons to add or remove fractals from toolbar
- Added "Add to toolbar" button in preview dialog
- Added option for SSAO effect to use random directions of simulated rays
- Added background image brightness control (necessary for HDR option)
- Double clicking on preview in animation tables starts rendering of chosen frame/keyframe
- Added function to uniform distance between camera target and camera through entire animation. It makes camera animation smooth.
- GroupBoxes hide their content when they are not enabled
- Added Platonic Solid formula
- Added extended formulas: Menger, Mandelbulb6Beta and Benesi_Transforms.
- Changed extended formula parameter names to begin with ötransformö and added additional transforms. (Note: V2.05  extended formula parameter files will require editing to be compatible with V2.06,)
- Changed labels for keyframe numbers to start from zero
- Collision detection now can be canceled
- Added option in preferences dialog to disable quit confirmation dialog
- Fixed bug: Program hanged when clicked too frequent on image or on navigation buttons
- Fixed bug: 'last frame to render' was zero after loading settings
- Fixed bug: NetRender often hanged at the end of rendering image
- Fixed bug: Now NetRender client stops rendering when it looses connection
- Fixed bug: Corrected number of frames to render in keyframe animation mode. It rendered one additional keyframe at the end.
- Fixed bug: Some of animation thumbnail weren't displayed properly (random noise)
- Fixed bug: memory leak in cTexture class
- Fixed bug: eliminated SEGFAULTs at application quit

About queue tool:
Queue tool allows to render a collection of settings files in the background.
While the list of settings files is being rendered, you can continue to work in the main window and also add more settings to the queue.
Methods to manage queue:
- by adding items using Add current settings button
- by editing queue.fractlist file
- by puting files into queue folder and use button Add orphaned
- by adding single settings or lists using command line interface
Temporary settings files are stored in $HOME/.mandelbulber/queue folder and the list is in $HOME/.mandelbulber/queue.fractlist
The queue can be rendered in another instance of Mandelbulber program, as the queue is shared between applications. You can also launch another Mandelbulber from command line interface with -q option. Then this application will watch queue and render automatically all new items.
Result images are saved into $HOME/.mandelbulber/images directory (or another if it's specified in application preferences.)

About Command Line Interface:

Code:
Usage: ./mandelbulber2 [options] settings_file 

Options:                                                                                                                                                                                                     
  -h, --help                  Displays this help.                                                                                                                                                           
  -v, --version               Displays version information.                                                                                                                                                 
  -n, --nogui                 Start program without GUI.                                                                                                                                                     
  -o, --output <N>            Save rendered image(s) to this file / folder.                                                                                                                                 
  -K, --keyframe              Render keyframe animation                                                                                                                                                             
  -F, --flight                Render flight animation                                                                                                                                                               
  -s, --start <N>             Start rendering from frame number <N>.                                                                                                                                               
  -e, --end <N>               Stop rendering on frame number <N>.                                                                                                                                                   
  -O, --override <KEY=VALUE>  Override item '<KEY>' from settings file with new                                                                                                                                     
                              value '<value>'.                                                                                                                                                                     
                              Specify multiple KEY=VALUE pairs by separating                                                                                                                                       
                              with a '#' (KEY1=VALUE1#KEY2=VALUE2). Quote whole                                                                                                                                     
                              expression to avoid whitespace parsing issues                                                                                                                                         
                              Override fractal parameter in the form                                                                                                                                                   
                              'fractal<N>_KEY=VALUE' with <N> as index of                                                                                                                                             
                              fractal                                                                                                                                                                                 
  -L, --list                  List all possible parameters '<KEY>' with                                                                                                                                               
                              corresponding default value '<VALUE>'.                                                                                                                                                   
  -f, --format <FORMAT>       Image output format:                                                                                                                                                                     
                              jpg - JPEG format                                                                                                                                                                       
                              png - PNG format                                                                                                                                                                         
                              png16 - 16-bit PNG format                                                                                                                                                               
                              png16alpha - 16-bit PNG with alpha channel format                                                                                                                                       
                              exr - EXR format                                                                                                                                                                         
  -r, --res <WIDTHxHEIGHT>    Override image resolution.                                                                                                                                                               
  --fpk <N>                   Override frames per key parameter.                                                                                                                                                       
  -S, --server                Set application as a server listening for                                                                                                                                                 
                              clients.                                                                                                                                                                                 
  -H, --host <N.N.N.N>        Set application as a client connected to server                                                                                                                                           
                              of given Host address (Host can be of type IPv4,                                                                                                                                         
                              IPv6 and Domain name address).                                                                                                                                                           
  -p, --port <N>              Set network port number for Netrender (default
                              5555).
  -C, --no-cli-color          Start program without ANSI colors, when execution
                              on CLI.
  -q, --queue                 Render all images from common queue.
  --stats                     Show statistics while renderering in CLI mode.
  --help-input                Show help about input.

Arguments:
  settings_file               file with fractal settings (program also tries
                              to find file in ./mandelbulber/settings directory)
                              When settings_file is put as a command line
                              argument then program will start in noGUI
                              mode<settings_file> can also be specified as a
                              list, see all options with --help-input

As always every feedback is appreciated!

Source code repository (GIT, SVN) https://github.com/buddhi1980/mandelbulber2
Logged

quaz0r
Fractal Molossus
**
Posts: 652



« Reply #1 on: November 30, 2015, 06:56:20 PM »

 dancing chilli dancing banana
Logged
Buddhi
Fractal Iambus
***
Posts: 895



WWW
« Reply #2 on: December 02, 2015, 07:29:38 PM »

Mandebulber 2.06 is finished, so now is the time to start creating version 2.07. As I wrote some time ago this release will focus on adding new formulas and transforms to mandelbulber.
I would like to invite you to development of formulas in Mandelbulber. Every help is appreciated. If some of you have some basic programing skills, below there are instructions how to write add own formulas into Mandelbulber code. Because I use Linux for development, the guide is prepared for Debian or Ubuntu. It looks a little complicated, but believe me, even person who never wrote any program can learn how to do this (on the Forum there is one guy who started based on this guide and it was his first contact with Linux and programming).
If somebody wants, a can grant write access to Mandelbulber code repository.

Writing own formulas in Mandelbulber

To prepare your system to work with Mandelbulber you need to do following steps:
- open Terminal application
- paste following command to install all needed software:

Code:
sudo apt-get install libqt5gui5 qt5-default libpng12-0 libpng12-dev qttools5-dev qttools5-dev-tools libgsl0-dev libgsl0ldbl libgomp1  git qtcreator

    it will ask you for admin (root) password

- download this file:
https://github.com/buddhi1980/mandelbulber2/releases/download/2.06/mandelbulber2-2.06.tar.gz

- unpack it somewhere (e.g. by using file manager)
- open unpacked mandelbulber2-2.06 folder with File Manager
- right click in File Manager and click Open In terminal
- run install script by typing command:
    ./install    (don't forget dot and slash)
   after compilation it will ask about your admin password to install all the files
   Now Mandelbulber is installed in your system and you have all needed files on place

Retrieving fresh source from git repository:
- create 'git' folder in your home directory
- open some new Terminal
- type:
    cd git
  git clone https://github.com/buddhi1980/mandelbulber2.git
   
Now you have the newest version of Mandelbulber code in your system

Compilation in QtCreator
- open git/mandelbulber2/mandelbulber2/Release folder in File Manager
- open mandelbulber.pro in Qt Creator
- when it's open, click Configure Project
- unfold Compiler Messages window (on the bottom of window)
- click hammer icon (build - left/bottom corner)
   the program will be compiled. If you did all steps correctly, shouldn't be error here
- try to run the program using green arrow


Adding new formulas:
- fractal_list.hpp:30 - enum enumFractalFormula - here is the list of formulas. Add new formula at the end with unique number.

- fractal_list.cpp:28 -  void DefineFractalList(QList<sFractalDescription> *fractalList) - here is detailed list of formulas

   example:

fractalList->append(sFractalDescription("Kaleidoscopic IFS", "ifs", kaleidoscopicIFS, analitycDE));

1st parameter: Displayed name of the fractal
2nd parameter: internal name of the fractal. The same name is used for UI files
3rd parameter: the same name as in enumFractalFormula
4th parameter: type of distance estimation. Most of formulas use deltaDE estimation which needs more computation but doesn't need any special code from you.


- fractal_formulas.cpp - here are definitions of function which calculate single fractal iteration. There is no adding of C constant and bailout condition here.

   example:
Code:
void MandelbulbIteration(CVector3 &z, const cFractal *fractal, sMandelbulbAux &aux)
{
double th0 = asin(z.z / aux.r) + fractal->bulb.betaAngleOffset;
double ph0 = atan2(z.y, z.x) + fractal->bulb.alphaAngleOffset;
double rp = pow(aux.r, fractal->bulb.power - 1.0);
double th = th0 * fractal->bulb.power;
double ph = ph0 * fractal->bulb.power;
double cth = cos(th);
aux.r_dz = rp * aux.r_dz * fractal->bulb.power + 1.0;
rp *= aux.r;
z = CVector3(cth * cos(ph), cth * sin(ph), sin(th)) * rp;
}

arguments:
z - input / output variable containing iteration vector
const cFractal *fractal - read only container with all fractal parameters
sMandelbulbAux &aux - input / output auxiliary structure containing values needed for instant to calculate estimated distance

All parameters and data structures are defined in fractal.h

- fractal_formulas.hpp - here are declaration of functions

- compute_fractal.cpp:42 - void Compute(const cFourFractals &four, const sFractalIn &in, sFractalOut *out) - here is the main iteration loop. You need to add in line about 290 calling of your new function.
  In line 305 you can do some exceptions for adding C constant

Code:
//addition of constant
switch (fractal->formula)
{
case menger_sponge:
case kaleidoscopicIFS:
case aexion:
case mandelbulb5:
case mandelbox103:
case quaternion104:
case mengerSponge105:
case mandelbulb6Beta:
case benesiTransforms:
{
break;
}
default:
{
if (in.common.juliaMode)
{
z += in.common.juliaC;
}
else
{
z += c * in.common.constantMultiplier;
}
break;
}
}

  In line 344 there are bailout conditions. Now all formulas use the same condition. You you need to create any special escape condition then just tell me.
Code:
//escape conditions
if (Mode == calcModeNormal)
{
if (r > in.common.bailout)
{
out->maxiter = false;
break;
}
}
    - initparameters.cpp:389 - void InitFractalParams(cParameterContainer *par) - here are definition of names of parameters which are used in UI and settings files. If you add new formula then try to utilize existing names. If there is nothing which fits to your needs, then add new one

    - fractal.cpp, fractal.hpp - here are data structures for fractal parameters. There is also copying of values from internal parameter representation to data structures which you use in fractal functions

User interface for new fractals:
To create UI files you can use Qt Designer application. The best would be if you make them based on existing files. All ui files are located in git/mandelbulber2/qt_data folder. Names start with fractal_ and the rest of name is the same as internal fractal name. Even if formula doesn't use any parameters, you need to create UI file which is the same like fractal_quaternion.ui (some kind of dummy). To have UI available from the program you have to copy ui file to /usr/share/mandelbulber2/qt_data folder.
In UI files there are very important names of edit fields. The program connects automatically edit fields with adequate parameters and connects edit fields with sliders/knobs. But to make it working first part of the name must describe type of edit widget. Use following prefixes:
- spinbox_ - scalar value
- slider_ - slider for scalar value
- checkBox_ - boolean value
- spinboxd3_ - edit field for knob for angle. This is for 3 dimensions, where angles are stored in CVector3 data type. Last letter of name must indicate axis name (_x, _y, _z)
- dial3 - knob for spinboxd3
- spinboxInt - spinbox for integer value
- sliderInt - slider for spinboxInt
- logedit - edit field for high variation value (only positive)
- logslider - slider for logedit which changes value in logarithmic scale
- vect3 - 3d vector (related to CVector3 data type). Name must ends with axis name[/li][/list]

Rest of the name of edit field must be the same as defined in initparameters.cpp
Logged

M Benesi
Fractal Schemer
****
Posts: 1075



WWW
« Reply #3 on: December 02, 2015, 11:34:35 PM »

  yeah!   cheesy  I need to start exploring the environment you created.

  Have a couple of things I want to do that look like they will be hard to do in Fragmentarium (or costly GPU wise according to 3dickulus- don't really get why... I'll ask him), and quite impossible to do in M3D since I don't have access to Delphi- but I can use qt-GCC to work on Mandelbulber 2.06 source.

  I'll run my code attempts by you, and let you know what I'm trying to add (main idea now is a "spray gun" to spray fractals onto other fractals like icynene foam (if you've never seen spray foam... :https://www.youtube.com/watch?v=gnuhEQLV6_I)). 


  Thanks Buddhi! 
Logged

mfg
Explorer
****
Posts: 41



WWW
« Reply #4 on: December 21, 2015, 03:45:55 AM »

Excellent program Buddhi! congratulations!

Your comments on version 2.06 have been most useful, particularly for implementing new formulae. (I had been working my way out since v.2.04)

I certainly have somo doubts but I will post them in due time.

cheers,

pd. when I save the image file with a long name in png, the file name is cut down to the first few characters. (The long name works nicely in the settings .fract file)
Logged
zebastian
Conqueror
*******
Posts: 121



« Reply #5 on: December 22, 2015, 05:29:46 PM »

hi mfg,

could it be, that the name is cut on some special character?
I just tried german Umlaute for the first time (─Í▄ń÷Ř) and these produce strange behaviour.
I just opened a ticket on github:
https://github.com/buddhi1980/mandelbulber2/issues/66
is this it, or do you think this is some other problem
Logged
AbstractBarista
Forums Newbie
*
Posts: 3


« Reply #6 on: January 21, 2016, 05:32:14 PM »

Just wanted to give thanks for the headless release.  I am now rendering many times faster across my servers!   grin
Compilation and install script were very smooth.
Logged
visual.bermarte
Fractal Fertilizer
*****
Posts: 355



« Reply #7 on: March 11, 2016, 06:42:36 PM »

Exr support is now available also for OS X platform   grin A Beer Cup > http://bit.ly/1LgVt7q
Logged
Pages: [1]   Go Down
  Print  
 
Jump to:  

Related Topics
Subject Started by Replies Views Last post
Mandelbulber 0.80 Mandelbulber Buddhi 5 3689 Last post June 27, 2010, 05:30:54 PM
by knighty
Mandelbulber 0.95 Mandelbulber Buddhi 6 2212 Last post November 06, 2010, 11:46:26 PM
by nameinuse2
Mandelbulber 0.96 Mandelbulber Buddhi 14 4605 Last post November 27, 2010, 01:12:36 PM
by jotero
Mandelbulber 0.97 Mandelbulber Buddhi 8 2989 Last post January 06, 2011, 08:07:00 PM
by fastrail
Mandelbulber 0.98 Mandelbulber Buddhi 9 3620 Last post March 05, 2011, 09:49:03 PM
by Buddhi

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines

Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM
Page created in 0.16 seconds with 29 queries. (Pretty URLs adds 0.007s, 2q)