Welcome, Guest. Please Login or Register
Home Help Search Login Register
Pages: 1 2 3 ... 8
Send Topic Print
sIBL_Framework (Read 27139 times)
Kel Solaar
Moderator
*****
Offline


Curious Apprentice

Posts: 1117
sIBL_Framework
08/27/08 at 20:25:34
 
sIBL_Framework And sIBL_GUI For Windows, Linux And Mac Os X


Last Stable Release : 2 . 1 . 1
10 October 2009 - 02H40 Paris, UTC/GMT +1:00


Last Nightly Release : 1 . 9 . 2
27 June 2009 - 14H00 Paris, UTC/GMT +1:00


Hello o/

I was searching a sIBL Loader for XSI and didn't found one Sad I thought, "Hey ! Let's code mine !" Like Andy, I think I hit the wall pretty fast :] While XSI SDK is great, there are a lot of stuff you can't really do when it came to GUI programming, and that are a pain if you want a nice interface. So I decided to code my own interface with an external GUI Library ( like Gwynne did for Modo ). It pissed me to deploy a lot of energy to code an external stuff for the sole purpose of having a nice interface into XSI. That's where came a new orientation for my XSI loader :

sIBL_Framework

Instead of building an 3D application dependant script/gui/ I wrote a python program (sIBL_Framework) that parse the .IBL file of your choice and a template script for your target application and sIBL_Framework output the loader script for your 3D package, you just need to execute the output script !

sIBL_Framework

...

Basically  every 3D package that can load and execute a script should be able to get its Loader Script written easily. You just need to deal with the Template script and wrote the functions that create the dome/sun, and do the cleanup. The .IBL file parsing is done by sIBL_Framework and it output the loader script with values read from the .IBL file.

sIBL_Framework and sIBL_GUI

...

This is the kind of arguments you send to sIBL_Framework in order to get your Loader Script outputed :

Code:
sIBL_Framework.exe -i "C:\sIBL-Collection\empty_room\empty_room.ibl" -t "C:\sIBL\src\dist\Templates\Maya_Environment_Shader.sIBLT" -o "C:\sIBL_Maya_Import.mel" -v 3 



sIBL_GUI

sIBL_GUI is the frontend for sIBL_Framework and is called every time you need to output a loader script for your 3D Package. You can browse your sIBL Collection, add as many sub collections as you want, filter the collection, send a sIBL to sIBLedit, etc...

sIBL_GUI - Collections List.

...

sIBL_GUI - GPS Map.

...

If you have any problems, don't hesitate to Email me !
If you have some sample script for your target application, I may take some time to code the Template script.

Manual - Help File :


sIBL_GUI Manual

Change Log :


sIBL_GUI - Nightly :

    sIBL_GUI - 1..0.0 To 2.0.0 :
  • Code Merged in sIBL_GUI 2.0.0 - Stable. A Truck Load of Code have been refactored between 1.0.0 and 2.0.0. A lot of new features have been introduced too. Check the Complete Change Log for more informations.

sIBL_GUI - Stable :

    sIBL_GUI - 2.1.1 :
  • Updated sIBL_GUI Help / Manual.
  • sIBL_GUI_FTP is now starting Download automatically when invoked, "Start Download" Button has been removed.
  • sIBL_GUI now restores the last visited folder.
  • Render Combo Box added in the Import Tab ( Usefull when you have multiple Templates for a Renderer ).
  • Refinements in sIBL_GUI UI.

Click Here For Complete Change Log.

sIBL_GUI And sIBL_Framework Downloads :


Requirements For Windows :

Nightly :

Stable :

Archives :

Sources :

sIBL_GUI Source Code is now available directly from a GIT repository, the HDRLabs Source Code Repository will not be updated anymore though the previous releases source code will stay in the "Archives" section.

sIBL_Framework And sIBL_GUI GIT Repository On GITHub.


sIBL_GUI_For_XSI Addon For XSI 7.X ( Windows Only )

Related Post : http://www.hdrlabs.com/cgi-bin/forum/YaBB.pl?num=1221392511
Back to top
« Last Edit: 04/18/10 at 17:44:44 by Kel Solaar »  
 
IP Logged
 
Kel Solaar
Moderator
*****
Offline


Curious Apprentice

Posts: 1117
Templating
Reply #1 - 08/27/08 at 20:30:43
 
Templating


To make things more clear I'll explain a little bit how the evil stuff work Smiley

Here are the first lines of the current XSI_Environment_Shader.sIBLT template :

Template Example ( Some Lines have been removed to fit in the post ) :

Code:
[Template]
Release = @Release | 0.9 | String | Template Release
Date = @Date | 06 September 2008 | String | Date
Author = @Author | Kel Solaar | String | Author
EMail = @Email | kelsolaar_fool@hotmail.com | String | Email
Url = @Url | http://my.opera.com/KelSolaar/blog/ | String | Url
Software = @Software | XSI | String | Software
Version = @Version | 7.0 | String | Version
OutputScript = @OutputScript | sIBL_XSI_Import.js | String | Output Script

[sIBL File Attributes]
BGfile = @BGfile
EVfile = @EVfile
EVmulti = @EVmulti
EVgamma = @EVgamma

...

[Script]
// @OutputScript - @Release For @Software @Version
// Author : @Author
// EMail : @Email
// Homepage : @Url
// Template Last Modified : @Date
// sIBL_Framework
var cBackgroundFilePath = "@BGfile";
var cLightingFilePath = "@EVfile";
var lightingMultiplier = @EVmulti;
var lightingGamma = @EVgamma;

...

sIBL_XSI_Setup(cBackgroundFilePath,
		cLightingFilePath,
		lightingMultiplier,
		lightingGamma,

		...

		);

function sIBL_XSI_Setup(cBackgroundFilePath,
			cLightingFilePath,
			lightingMultiplier,
			lightingGamma,
			...
			)
 



The syntax is pretty close of the .IBL files one so I can parse it with the same class.
I call a node every block that start with "[ ... ]" and the following stuff are attributes of the node.
For example the first node is "[Template]" and the first attribute is "Release"  with his values : "@Release | 0.9 | String" or "[sIBL File Attributes]" as a node and "BGfile" as and attribute and "@BGfile" for the current attribute value.
The "@BGfile" is the central point of the Framework. When I parse the .IBL File I store the .IBL "BGfile" attribute value ("D:/blabla.jpg" for example) and when I need to build the output script, I replace each occurence of "@BGfile" in the "[Script]" node by the value of the .IBL file and write the modified "[Script]" node to the disk as the output script.

Example of a final script :

Code:
// sIBL_XSI_Import.js - 0.9 For XSI 7.0
// Author : Kel Solaar
// EMail : kelsolaar_fool@hotmail.com
// Homepage : http://my.opera.com/KelSolaar/blog/
// Template Last Modified : 06 September 2008
// sIBL_Framework
var cBackgroundFilePath = "D:/_Temp/sIBL-Collection/apartment/Apartment_Spherical_HiRes.jpg";
var cLightingFilePath = "D:/_Temp/sIBL-Collection/apartment/Apartment_Diffuse.hdr";
var lightingMultiplier = 1.000000;
var lightingGamma = 1.000000;
var cReflectionFilePath = "D:/_Temp/sIBL-Collection/apartment/Apartment_Reflection.hdr";
var reflectionMultiplier = 1.000000;
var reflectionGamma = 1.000000;
var sunU = 0.625000;
var sunV = 0.390600;
var sunColor = [240,250,255];
var sunMultiplier = 1.100000;
var createBackground = 1;
var createLighting = 1;
var createReflection = 1;
var createSun = 1;
var createFeedBack = 1;
var feedbackRadius = 1000.0;
var createGround = 1;
var hideLights = 1;
var activateFinalGather = 1;
var activateTonemapping = 1;

sIBL_XSI_Setup(cBackgroundFilePath,
		cLightingFilePath,
		lightingMultiplier,
		lightingGamma,
		cReflectionFilePath,
		reflectionMultiplier,
		reflectionGamma,
		sunU,
		sunV,
		sunColor,
		sunMultiplier,
		createBackground,
		createLighting,
		createReflection,
		createSun,
		createFeedBack,
		createGround,
		feedbackRadius,
		hideLights,
		activateFinalGather,
		activateTonemapping);

function sIBL_XSI_Setup(cBackgroundFilePath,
			cLightingFilePath,
			lightingMultiplier,
			lightingGamma,
			cReflectionFilePath,
			reflectionMultiplier,
			reflectionGamma,
			sunU,
			sunV,
			sunColor,
			sunMultiplier,
			createBackground,
			createLighting,
			createReflection,
			createSun,
			createFeedBack,
			createGround,
			feedbackRadius,
			hideLights,
			activateFinalGather,
			activateTonemapping)

			...

 



If you check, it's the "[Script]" node updated with the values of .IBL file nodes.
After you have special attributes with multiples values like :
createBackground = @createBackground | 1 | Boolean
It's basically some default value and the attribute type for the time the Gui will be build ( and to be able to have a functionnal output )

Voilą Smiley Hope it's easier to understand now :]

You can easily modify the template to fill your needs, or even build new ones for other applications etc Smiley

Here is a Templates centric thread, you'll find what Templates are coded, planned etc ... : http://www.hdrlabs.com/cgi-bin/forum/YaBB.pl?num=1223936394
Back to top
« Last Edit: 11/04/08 at 07:42:33 by Kel Solaar »  
 
IP Logged
 
Blochi
Administrator
*****
Offline



Posts: 1726
Hollywood
Re: sIBL_Framework
Reply #2 - 08/27/08 at 21:25:02
 
hmmm ... sounds interesting.

Thank you, Thomas, and welcome to the club!

Eventually you could steal a thing or two from Gwynnes modo script, because it was essentially made in Python as well.

I'm not entirely sure if I understand the concept entirely, but it it sounds like an interesting backdoor solution.

Blochi
Back to top
 
WWW  
IP Logged
 
Kel Solaar
Moderator
*****
Offline


Curious Apprentice

Posts: 1117
Re: sIBL_Framework
Reply #3 - 08/27/08 at 21:33:39
 
Blochi wrote on 08/27/08 at 21:25:02:
hmmm ... sounds interesting.

Thank you, Thomas, and welcome to the club!

Eventually you could steal a thing or two from Gwynnes modo script, because it was essentially made in Python as well.

I'm not entirely sure if I understand the concept entirely, but it it sounds like an interesting backdoor solution.

Blochi


Hi :] Thanx, Well yeah it's hard to understand the thing without seeing it working Smiley It will be more clear when I'll fill the Template Explanation post :] But basically it should avoid any GUI headache in the target application, provide an easy way of integrating sIBL in any 3D package that can load and source a script (Houdini, Blender, Cinema4D).

Unified Interface + Template ---> Custom 3D Package Loader Script

If someone provide me some sample scripts for the target application, I should be able to code the template for it  Smiley
Back to top
 
 
IP Logged
 
Blochi
Administrator
*****
Offline



Posts: 1726
Hollywood
Re: sIBL_Framework
Reply #4 - 08/29/08 at 12:53:11
 
Ah, nice update.

So if I understand you correctly, the template is in fact like a preference file, and the override keys are the GUI controls. And the plan is now to make the browser a separate plugin, that lets you select an IBL file based on the thumbnails, right?

It's a little hard to understand for me, since my LScript is a monolith script and I don't even think it works with frameworks and such.

In terms of GUI, I was always wondering if it wouldn't be in fact easier in XSI. From what I understand you guys have this cool webview in a viewport. Now imagine, your GUI browser would in fact be an HTML page with a table that is dynamically generated after scanning the sIBL collection....

Blochi
Back to top
 
WWW  
IP Logged
 
Kel Solaar
Moderator
*****
Offline


Curious Apprentice

Posts: 1117
Re: sIBL_Framework
Reply #5 - 08/29/08 at 16:55:44
 
In fact instead of coding a loader dependant of XSI and it's Gui or software X or Y, I'm doing kind of a standalone loader : you will have one standalone program (sIBL_Gui, not coded yet) that enable you to browse your library, choose a template for your target application ( Templates for XSI 7.0  and Maya 2008 are available), tweak the settings you want, etc, and after that it send a command line with the paths of the .ibl file, the template file, the output script and the settings (Override Keys) to sIBL_Framework that will process the loader script for the target application. After that you just execute the script in the target application and you are done.

For now sIBL_Gui is not coded, so you have to manually call sIBL_Framework manually and type the command line. Not userfriendly at all. That's why I wrote the sIBL_SimpleLoader for XSI, so that users can still use sIBL_Framework in an userfriendly way. Of course when sIBL_Gui will be started, the XSI sIBL_SimpleLoader will be useless, because the command line for sIBL_Framework will be sent by sIBL_Gui and you will only have to push a button in a shelf/menu to execute the loader script or in a later future a direct connection to the 3d app with python.

It' seems to be really complicated, but the goal is to provide loader scripts for every 3d package that can load and execute a script without having to deal with interface/gui/.ibl parsing anymore. I'm thinking about Blender, Houdini,  Cinema4D, etc.

Hope it's clear :]]

Don't hesitate to contact me or email me if you have any suggestions, problems, etc Smiley
Back to top
 
 
IP Logged
 
Blochi
Administrator
*****
Offline



Posts: 1726
Hollywood
Re: sIBL_Framework
Reply #6 - 08/29/08 at 18:26:11
 
Hmm. I can see the intent.

And yes, it does sound complicated. Wink But I think I got your point. It's more like a "Push" than a "Pull" import operation... Heard the push thing is the hottest trend these days in Silicon Valley.

I believe in the strong need for having the GUI integrated in a 3d App. Or, at least, it should *feel* integrated. With this framework system, I think it would need a helper script that
A) launches the GUI
B) then goes into listen mode
C) executes the setup script provided by the framework.

Blochi
Back to top
 
WWW  
IP Logged
 
Kel Solaar
Moderator
*****
Offline


Curious Apprentice

Posts: 1117
Re: sIBL_Framework
Reply #7 - 08/29/08 at 19:45:37
 
Blochi wrote on 08/29/08 at 18:26:11:
I believe in the strong need for having the GUI integrated in a 3d App. Or, at least, it should *feel* integrated. With this framework system, I think it would need a helper script that
A) launches the GUI
B) then goes into listen mode
C) executes the setup script provided by the framework.

Blochi


Exactly Smiley  It's what's currently happening with the XSI loader (sort of) :]
Back to top
 
 
IP Logged
 
Kel Solaar
Moderator
*****
Offline


Curious Apprentice

Posts: 1117
sIBL_GUI
Reply #8 - 09/01/08 at 23:26:53
 
Hi o/

I started working on sIBL_GUI, here are some developpement screens :

sIBL_GUI - Collections Browser Tab

...

sIBL_GUI - Import Tab

...

sIBL_GUI -Preferences Tab

...

Currently only the Collections Browser and preferences Tab are nearlly fully functionnal, browser filtering is working, search is not :]
A lot of stuff to do, harder stuff to come will be the dynamic interface creation for the Additionnal Attributes in the Import Tab I think.

It's possible to have as many collections as you want, the big grey rectangle in the top of the interface is for the logo, I didn't had time to photoshop it :]

Thomas
Back to top
« Last Edit: 09/10/08 at 08:32:49 by Kel Solaar »  
 
IP Logged
 
Kel Solaar
Moderator
*****
Offline


Curious Apprentice

Posts: 1117
Argh :[
Reply #9 - 09/05/08 at 21:36:00
 
Hi o/

Sorry for not updating, I'm currently flooded at work on our current production, getting back at home late, etc. But I still manage to code and make progress in sIBL_GUI. I have a bad news by the way, my laptop video card burned, making it unusable, I just had time to backup the project on an external DD before it extinct fully. Dell should take care about the thing , but it's weekend and I don't really know how long it will take before I get my work computer back :[

Thomas
Back to top
 
 
IP Logged
 
Blochi
Administrator
*****
Offline



Posts: 1726
Hollywood
Re: sIBL_Framework
Reply #10 - 09/05/08 at 22:25:01
 
No worries, I'm pretty slammed as well over here.

I already appreciate all the work you're putting into this project. And even there's no XSI user responding here, I'm sure they do too.

Blochi
Back to top
 
WWW  
IP Logged
 
Kel Solaar
Moderator
*****
Offline


Curious Apprentice

Posts: 1117
Re: sIBL_Framework
Reply #11 - 09/10/08 at 08:12:41
 
Blochi wrote on 09/05/08 at 22:25:01:
No worries, I'm pretty slammed as well over here.

I already appreciate all the work you're putting into this project. And even there's no XSI user responding here, I'm sure they do too.

Blochi


Hehe :] Hope they will :] It's still an interesting exercise to code this kind of stuff ^^
I got my laptop back and updated a lot of stuff (~80% resize to all images to fit in the forum):

sIBL_GUI - Collections Browser Tab

...

sIBL_GUI - Import Tab

...

sIBL_GUI - Preferences Tab

...

The application is currently working and doing what's its intented to do. I tweaked a lot of stuff in the interface to make it expandable and so on. I have some stuff left in my Todo list, most of them are cosmetics things and code consolidating to deal with user mistakes/etc, but there is still important code to implement. Depending on my time, I'll maybe release a version this weekend for XSI users in an Addon, like the sIBL_SimpleLoader.

Oh and here is some nerd stuff : you have access to all the program verbose at the time interface is started in an optional tearable log window :]

sIBL_GUI - Import Tab

...

Grin

Thomas
Back to top
« Last Edit: 09/10/08 at 20:05:38 by Kel Solaar »  
 
IP Logged
 
Blochi
Administrator
*****
Offline



Posts: 1726
Hollywood
Re: sIBL_Framework
Reply #12 - 09/10/08 at 21:43:27
 
Wow, most impressive.

Some things that would be cool:
A) Direct link to sIBL-Edit. It's really easy via commandline call: sIBLexit.exe D:/....foo.ibl and it opens up right away.

B) A shortcut to edit the templates. In recent plugins I have just added an artificial last entry to my dropdowns called [edit]... in this case I guess it would open up the folder with the templates or load them in the default text editor.

Blochi

Back to top
 
WWW  
IP Logged
 
Kel Solaar
Moderator
*****
Offline


Curious Apprentice

Posts: 1117
Re: sIBL_Framework
Reply #13 - 09/10/08 at 23:25:34
 
Blochi wrote on 09/10/08 at 21:43:27:
Wow, most impressive.

Some things that would be cool:
A) Direct link to sIBL-Edit. It's really easy via commandline call: sIBLexit.exe D:/....foo.ibl and it opens up right away.

B) A shortcut to edit the templates. In recent plugins I have just added an artificial last entry to my dropdowns called [edit]... in this case I guess it would open up the folder with the templates or load them in the default text editor.

Blochi



Hi o/

Just added your requests in my todo list :]
Should be pretty easy to implement this ^^
Back to top
 
 
IP Logged
 
Dschaga
Ex Member


Re: sIBL_Framework
Reply #14 - 09/12/08 at 09:37:25
 
oh ha!

I was away from this forum for some time and i missed this great thread!
It's a wonderfull idea to work on a framework, because this would make it more easier to have a real plattform independend loader.

This would give us also the opportunity to work on strategies to weld/glue 3d applications and the different scripts together.

The idea ..if i have understand it correct... that the loader can generate a valid script for different 3d applications is brilliant, because if this works, we can think of writing more scripts that way. We only have to find an easy way where the usability isn't broken, because it means that the user executes a script which starts the python thingie, which then generates a valid script which then have to also to be executed. ..so this seems to be the most difficult part  ( IMHO )

I hope i have time next week to look into a 3dsmax template.
It should always be time to create a proof of concept Wink
...attached a template for the scanline renderer (even if it makes no sense without GI)
Back to top
« Last Edit: 09/12/08 at 12:48:43 by N/A »  

3dsmax_scanline_framework_template_001.zip (Attachment deleted)
 
IP Logged
 
Pages: 1 2 3 ... 8
Send Topic Print