[Linux only] Indigoo

General questions about Indigo, the scene format, rendering etc...
lego
Posts: 99
Joined: Sat Oct 14, 2006 7:29 am

[Linux only] Indigoo

Post by lego » Tue Nov 14, 2006 10:42 am

I finally finished the script, lol I've spent almost all day coding it :)
It's written in python and works only with linux. I've tested it a little and it seems to work correctly.

Warning: as usual use it at your own risk :)

OVERVIEW:
This script essentially has three features:
-launches the render with a network master and a network slave process on the same machine. The slave process is kept alive until the render is finished
-can stop the render at given mutations per pixel
-can render a series of xml files at given mutations per pixel

INSTALLATION:
you need to have python installed
download the script and place it in your indigo folder.
make it executable (chmod 711 indigoo.py)

USAGE:
launch it by typing ./indigoo.py in console
then you're asked to enter three parameters:

1) Scene name
enter your scene's name (es. test.xml)

2) Max mutations
the value of mutations per pixel at which you want to stop the render. Insert 0 for an endless render. It must be an integer

3) Number of frames
insert the number of frames of your animation (1 if it's not an animation)

NOTES:
-I've added no support for multiple cores, as I have just only one :P If someone find the script useful and needs it, I will add it

-The process stopping at given mutations per pixel works this way: when the value is reached, the script wait for the slave to upload another frame and then kills it. Then it waits for the master to save a last time and kills it. This way process halting during a save should be avoided

-If you dare to try an Indigo animation, just rename your frames this way
scenename.numframe
for example if I have an animation of 5 frames, the scene's name is home.xml and I want each frame to stop at 1000 muts, I have to rename the files
home.xml.1
home.xml.2
home.xml.3
...

and then enter as parameters
scene name = home.xml
max mutations = 1000
frames = 5

-at the start of the script you can see a 'anim_wait' variable. It tells the script how much to wait, in seconds, before starting the next frame. I had to insert this delay as I noted that sometimes Indigo gave me an error if launched too soon after I closed it. You can try to use a lower value and tweak it to your pc :)


that's all :) I hope that someone finds it useful! I'd like to see an Indigo animation soon :)


Download indigoo.tar.gz

EDIT: added working link :)
Last edited by lego on Tue Nov 14, 2006 11:03 pm, edited 2 times in total.

User avatar
afecelis
Posts: 749
Joined: Tue Aug 01, 2006 4:14 am
Location: Colombia
3D Software: Blender
Contact:

Post by afecelis » Tue Nov 14, 2006 11:54 am

try another files upload service. This really sounds interesting to try out in Linux :wink:
AMD Ryzen 7 1800 @3.6ghz, 32GB ddr4 3200 mhz Ram, Nvidia RTX 3060 12GB, Win10, Blender/Sketchup/Modo/Cinema4d

lego
Posts: 99
Joined: Sat Oct 14, 2006 7:29 am

Post by lego » Tue Nov 14, 2006 8:17 pm

afecelis wrote:try another files upload service. This really sounds interesting to try out in Linux :wink:
any suggestion? I never used any of them :(

User avatar
jurasek
Posts: 247
Joined: Sun Jun 25, 2006 11:23 pm
Location: Poland

Post by jurasek » Wed Nov 15, 2006 1:14 am

yousendit.com

greetz,
jur

lego
Posts: 99
Joined: Sat Oct 14, 2006 7:29 am

Post by lego » Wed Nov 15, 2006 1:58 am

thanks, already solved :) I edited the first post, but maybe it wasn't very clear :)

I've made a test animation!
the subject is terrible, and the quality is far worse... but hey, it was just a test :)
the script works correctly, all the frames were rendered automatically and none of them was corrupted :)

http://legomania.altervista.org/suzanne2.tar.gz

p.s. if you can't open the file, add .avi extension

User avatar
jurasek
Posts: 247
Joined: Sun Jun 25, 2006 11:23 pm
Location: Poland

Post by jurasek » Wed Nov 15, 2006 7:15 am

i got http://home.altervista.org/site/ via your link.. :(

greetz,
jur

User avatar
afecelis
Posts: 749
Joined: Tue Aug 01, 2006 4:14 am
Location: Colombia
3D Software: Blender
Contact:

Post by afecelis » Wed Nov 15, 2006 2:51 pm

Lego, why don't you send me a copy (email below) and Iĺl mirror it for you :wink: I havent been able to download it yet as my Italian seems to be very bad these days....errrmmm
AMD Ryzen 7 1800 @3.6ghz, 32GB ddr4 3200 mhz Ram, Nvidia RTX 3060 12GB, Win10, Blender/Sketchup/Modo/Cinema4d

lego
Posts: 99
Joined: Sat Oct 14, 2006 7:29 am

Post by lego » Thu Nov 16, 2006 10:18 am

mailed! :)

User avatar
kalamadeasidhe
Posts: 15
Joined: Sat Nov 25, 2006 4:09 am

Post by kalamadeasidhe » Sun Nov 26, 2006 3:20 pm

this is a great script! I use it on my machine a lot. I don't know how to script python, myself or I'd just make changes. I read through and I think I got the general gist of what the commands mean and do.....but I do not know python syntax. This script works wonderfully on my machine. I have a dual core machine, so I looked through and found the slave start section, then just started another at the same time. It's working good so far. My question is, if I want to put this on a network, how could I do it? I tried getting it to run on my network already, but it doesn't work. I edited the slave start line to point to the right computer as host, then looked through and I think I found the line that ?writes all the indigo stuff to a txt file? and removed that. I'm not clear on this.....sorry if I sound stupid, I've never looked at a python script before. Are you dumping the output of indigo into a text file then reading the tail of that to find out many mutations you're getting or are you dumping something into that text file itself? I'm confused about that. The file doesn't display well on my machine, so I can't look at it to find out. If so, how would I go about changing the script so that I could mount the indigo folder on several machines and run an indigoo_slave.py script that simply reads, waits for the correct mutations number (or perhaps something like within 2 of it?) and then shuts itself down? It would be great if a "mutation max" command line option was in indigo that managed all the slaves, but this works great, too. Can you edit your script or point me in a direction to learn how to edit it? Thank you!

User avatar
afecelis
Posts: 749
Joined: Tue Aug 01, 2006 4:14 am
Location: Colombia
3D Software: Blender
Contact:

Post by afecelis » Sun Nov 26, 2006 3:35 pm

AMD Ryzen 7 1800 @3.6ghz, 32GB ddr4 3200 mhz Ram, Nvidia RTX 3060 12GB, Win10, Blender/Sketchup/Modo/Cinema4d

lego
Posts: 99
Joined: Sat Oct 14, 2006 7:29 am

Post by lego » Mon Nov 27, 2006 10:02 pm

kalamadeasidhe wrote:this is a great script! I use it on my machine a lot. I don't know how to script python, myself or I'd just make changes. I read through and I think I got the general gist of what the commands mean and do.....but I do not know python syntax. This script works wonderfully on my machine. I have a dual core machine, so I looked through and found the slave start section, then just started another at the same time. It's working good so far. My question is, if I want to put this on a network, how could I do it? I tried getting it to run on my network already, but it doesn't work. I edited the slave start line to point to the right computer as host, then looked through and I think I found the line that ?writes all the indigo stuff to a txt file? and removed that. I'm not clear on this.....sorry if I sound stupid, I've never looked at a python script before. Are you dumping the output of indigo into a text file then reading the tail of that to find out many mutations you're getting or are you dumping something into that text file itself? I'm confused about that. The file doesn't display well on my machine, so I can't look at it to find out. If so, how would I go about changing the script so that I could mount the indigo folder on several machines and run an indigoo_slave.py script that simply reads, waits for the correct mutations number (or perhaps something like within 2 of it?) and then shuts itself down? It would be great if a "mutation max" command line option was in indigo that managed all the slaves, but this works great, too. Can you edit your script or point me in a direction to learn how to edit it? Thank you!
wow I'm really happy that you find it useful :)
I think that starting two network slaves is not the best solution, as it could give problems with the slave stop/resume feature
you should add the '-t 2' option (or something like that) that lets indigo use both cores. I think it should be enough to add it to the slave_launch line

yes, it writes both indigo processes' output to a file and then read it.
this is used for max mutations stop and to avoid shutting down during an upload or a save
the file is periodically deleted, so you don't have to worry about occupied space.
if max mutations is set to 0 then the output is dumped to /dev/null that is a sort of black hole :P

I don't really know how to help you with multiple machines as I'm not really good with networking, and I have just one pc here, so I couldn't even test it :(
sorry


afecelis thanks for hosting :)

User avatar
kalamadeasidhe
Posts: 15
Joined: Sat Nov 25, 2006 4:09 am

Post by kalamadeasidhe » Tue Nov 28, 2006 1:50 am

lego wrote:
kalamadeasidhe wrote:this is a great script! I use it on my machine a lot. I don't know how to script python, myself or I'd just make changes. I read through and I think I got the general gist of what the commands mean and do.....but I do not know python syntax. This script works wonderfully on my machine. I have a dual core machine, so I looked through and found the slave start section, then just started another at the same time. It's working good so far. My question is, if I want to put this on a network, how could I do it? I tried getting it to run on my network already, but it doesn't work. I edited the slave start line to point to the right computer as host, then looked through and I think I found the line that ?writes all the indigo stuff to a txt file? and removed that. I'm not clear on this.....sorry if I sound stupid, I've never looked at a python script before. Are you dumping the output of indigo into a text file then reading the tail of that to find out many mutations you're getting or are you dumping something into that text file itself? I'm confused about that. The file doesn't display well on my machine, so I can't look at it to find out. If so, how would I go about changing the script so that I could mount the indigo folder on several machines and run an indigoo_slave.py script that simply reads, waits for the correct mutations number (or perhaps something like within 2 of it?) and then shuts itself down? It would be great if a "mutation max" command line option was in indigo that managed all the slaves, but this works great, too. Can you edit your script or point me in a direction to learn how to edit it? Thank you!
wow I'm really happy that you find it useful :)
I think that starting two network slaves is not the best solution, as it could give problems with the slave stop/resume feature
you should add the '-t 2' option (or something like that) that lets indigo use both cores. I think it should be enough to add it to the slave_launch line

yes, it writes both indigo processes' output to a file and then read it.
this is used for max mutations stop and to avoid shutting down during an upload or a save
the file is periodically deleted, so you don't have to worry about occupied space.
if max mutations is set to 0 then the output is dumped to /dev/null that is a sort of black hole :P

I don't really know how to help you with multiple machines as I'm not really good with networking, and I have just one pc here, so I couldn't even test it :(
sorry


afecelis thanks for hosting :)
-t 2 for 2 threads, right? Awesome! I'm learning more about the command line options all the time! Thanks! So, if it reads and writes the text file, do you think you could split it so the slave process is using a separate script? I really hate to be a bother with it like that. I just am completely new to python and have broken the script about 10 times so far trying to get that to split. The python syntax is nothing like what I'm used to! Thanks for a great script for the single machine as well!

lego
Posts: 99
Joined: Sat Oct 14, 2006 7:29 am

Post by lego » Tue Nov 28, 2006 4:34 am

I don't understand why do you need a separate script for the network master and the network slave!
If it's for using more machines as slaves, then it's not enough to split up the script! you need to have them communicate in some way, and I can't help you in this regard :(
python is very simple and intuitive, especially if you already know other languages :)

User avatar
kalamadeasidhe
Posts: 15
Joined: Sat Nov 25, 2006 4:09 am

Post by kalamadeasidhe » Wed Nov 29, 2006 1:10 pm

lego wrote:I don't understand why do you need a separate script for the network master and the network slave!
If it's for using more machines as slaves, then it's not enough to split up the script! you need to have them communicate in some way, and I can't help you in this regard :(
python is very simple and intuitive, especially if you already know other languages :)
I'm mounting the indigo folder on other machines and linking to the master log file. ;) Not the best way but it works. I'll keep trying then. The open('logmaster.txt','r') line opens the file for reading, correct? Yes, it does look easy to use. Once I look into it more, I will probably just make a tcl script that is for slaves. I'll post it here if I do. :)

Velinje
Posts: 4
Joined: Sat Nov 11, 2006 8:27 pm

Post by Velinje » Thu Nov 30, 2006 2:46 am

Really cool script, tho I'm having some problems with the rendering. It seems to work flawless with some render scenes. But wierdly, somtimes the render becomes all black. I can see it calculating mutations, but nothing happens and the png file is all black.

I tried the same file (It is a quite large file 132mb) on a windows computer, and it start to render without problems.

With some of the testscenes from the indigo realease, running them with the python script. I get socket/TCP errors. (meshlight_test2.xml)

I'm no guru on Linux so I might be doing somthing really wrong. I'm running Gentoo for amd64 with GTK on a AMD64 1.8ghz dualcore..

For me it only seems wierd, I rendered the file in 4000x3000 at first and it worked out good. Then I changed the resolution in the xml file to 2000x1500 and it started rendering black screens.

Anything special I need to configure with wine?

kalamadeasidhe: Would be really cool to have a working script for slaves!

Post Reply
24 posts

Who is online

Users browsing this forum: DotBot [Bot] and 27 guests