Multithreading, RenderMan, and other assorted questions

Good morning,

You will have to excuse me for asking a lot of questions lately, but I promise that I am learning fast. I did a little search for these answer, but did not find much. Funny enough, searching for multithreading yields no results. So, here are my questions:

  1. I can tell the Blender is not multithreaded. Furthermore, I know that creating a multithreaded application can be very difficult, but possible. If an application type is a candidate for multithreading, 3D modeling and rendering applications are. Are there any plans to multithread Blender? Why has it not been done yet (this part might be a stupid question)?

  2. I have read a little about RenderMan compliant renders. I know that they are supposed to be an open standard for creating rendering engines. Are their any RenderMan-compliant rendering engines that will use Blender files? More to the point, are their any distributed, multithreaded ones? Probably not.

  3. Does Blender 2.23 (with the public key) support rendering to AVI codecs on my choice? Or is that only a feature of Blender 2.25, FunBlender, and NikolaTesla Blender?

Well, three rather simple questions. Funny enough, I have not seen them asked before. If you have the time, I would appreciate some help. Again, thank you all for contributing to my education.

#2 i can answer :wink:

BRMT, 3Delight, Lightflow(?) and others are examples of Renderman compilant renders. With export scripts it is possible to use these with Blender - Look in the Python/Plugin forum here on Elysiun for the scripts.

Slight correction to Claws: Lightflow is not Renderman compliant. The others are, though. Now for peptidbond’s questions:

 I think there are tools written for BMRT (which may be applicable to 3Delight and Aqsis as well) for distributing rendering across a network.  Distributed rendering is not part of the Renderman specification, but it is important for film productions and the like, so finding tools to do this probably won't be hard.

 About Blender, only version 2.25 (that includes nikolatesla, funblender, desaster, tuhopuu and all those) has the AVI Codec option.

 And I don't know all of what's being worked on in Blender, but AFAIK multithreading is a rather low priority.  Blender already runs quite fast, the only advantage to multithreading is in rendering animations.  Some of the programs that Blender exports to (I'm mostly thinking Yafray here) do support multithreading.

Also, about Renderman: Green has been working on building native Renderman export support into Blender. I haven’t seen much discussion about it lately, but I hope it’s still going strong. Search the blender.org forums for more info.

Regarding AVI codec export from Blender: AFAIK, that feature is only available under Windows.

Regarding rendering distribution with Blender: That can be easily done using a simple batch file. Type blender -h from a console to learn about the command line options.

Martin

Thanks for the information. After I posted this thread, I tried blender -h in the command line and figured out a way to do simple distributed animations. As a side note, if you have ever done blender -h and then -Y, it is rather funny. A nice little easter egg.

As far as what I had in mind for distributed computing, I was thinking of a central server which would loud the primary file. It would then send commands to individual processing stations to render a series of frames. Once finished, the processing station would hand back the images. Finally, the central server would compile the rendered frames into the final movie (AVI, QT, etc.). Looks like the best I can do is tell individual computers to render certain frame ranges and then splice them together manually.

As for the multithreading, yes it would only be necessary for rendering. However, many of us have scenes that can take a long time to render. I would also guess that a lot of Blender users are also hardware nuts and might have more advanced systems. At any rate, multithreading would certainly be nice. This is also why I asked about RenderMan engines that can natively use blender files. If I can find a RenderMan engine that native supports blender files and is multithreaded, then I could potentially slash my render times by a huge margin.

Just an idea I want to investigate. Let me know if you can think of a multithreaded, blender capable, RenderMan engine.