Cycles for Softimage

Plugins linking to this thread: (hide)

Sycles 2.1.3Author: Shekn @si-community
V 2.1.3 released August 2023 —

This is a full integration of the Blender Cycles renderer into XSI. This update is a complete rewrite for the latest Cycles version from 2023 and has support for the following Softimage features (quoted from the download page):

Polygon meshes and hair geometry Texture coordinates Vertex colors Shaderball preview. For materials, shader nodes and texture nodes Basic limited support of the following buil-in Softimage shader nodes: Phong, Lambert, Hair Shading, Image, converters between vector, color and scalar Ambience global environment light Limited support of built-in Softimage light sources Model instances ICE strands geometry ICE poitcloud instances ICE geometry attributes (vector, color and scalar) with context per-point and per-object Volume rendering. In particular supports emFluid, Explosia FX and openVDB for Softimage volumes Special VDB Primitive for rendering vdbs without ICE Output multilayered exr file with all rendered passe Rendermaps

The following features from Cycles itself are supported: CPU and GPU rendering. In particular multidevices are supported. This allows to use cpu and gpu simultaneously. Note: This distribution does not contains libraries for gpu rendering. You can download it from here. Unpack the archive and place lib folder to the /Sycles_2_1_2/Application/Plugins/ folder near the file config.ini All Cycles shader nodes OSL shaders OpenColorIO profiles (Blender profile included) All Cycles output passes (Combined, Depth, Normal and so on) Color and value shader AOVs Lightgroups Cycles camera properties, in particular all panorama modes Cycles light sources Denoising by using Open Image Denoise and OptiX denoiser

For more information, full documentation and a list of the available Cycles nodes see the download page linked below. There is no local backup because the addon is still frequently updated - the plugin can be downloaded on Shekn's github releases. The source code is available on github there well.

News concerning 3D DCC business
Post Reply
jonmoore
Posts: 153
Joined: 30 Jul 2016, 18:18

Re: Cycles for Softimage

Post by jonmoore » 20 Oct 2017, 18:26

nospitters wrote: 20 Oct 2017, 16:39 in my case installing the r2 solved previous immediate crashes on rendering in xsi2015sp2 also with the win10 update...so there must be some differences...
Interesting, the Autodesk rep told me R2 was the same as 2015 SP2 other than the FBX libraries being updated(this alone made it a worthwhile update for me). There's probably other unspecified bug fixing and suchlike.

nospitters
Posts: 52
Joined: 06 Jul 2012, 18:08
Location: bremen, germany

Re: Cycles for Softimage

Post by nospitters » 20 Oct 2017, 18:31

...but i think bennyhase is also right, because on my laptop there is xs2015(no sp1, sp2, r2) and there is also rendering fine(but no gpu mode, because no nvidua card...)
very strange...
The Soulcage Department
http://www.soulcage-department.de

Shekn
Posts: 213
Joined: 30 Dec 2016, 20:18

Re: Cycles for Softimage

Post by Shekn » 20 Oct 2017, 20:18

It's great that all works correctly on most users. About using *.cubins from Blender distibutive: as I understand these files should be generated with the same compiler (or driver, or system version, or something similar) as other cycles libraries. So, files from Blender are not compatible with Sycles in most cases. Jonmoore, try this link: https://mega.nz/#!Uw5V3Lja!m8wf_Ra1u0xZ ... 1OGDPDISrs

May be files from this archive will works. In any case, I will add additional cuda architectures in next update release (whenever it will be).

jonmoore
Posts: 153
Joined: 30 Jul 2016, 18:18

Re: Cycles for Softimage

Post by jonmoore » 20 Oct 2017, 21:31

Shekn wrote: 20 Oct 2017, 20:18 It's great that all works correctly on most users. About using *.cubins from Blender distibutive: as I understand these files should be generated with the same compiler (or driver, or system version, or something similar) as other cycles libraries. So, files from Blender are not compatible with Sycles in most cases. Jonmoore, try this link: https://mega.nz/#!Uw5V3Lja!m8wf_Ra1u0xZ ... 1OGDPDISrs

May be files from this archive will works. In any case, I will add additional cuda architectures in next update release (whenever it will be).
Thanks for trying but not only did the 1080 Ti not work with those .cubins but the 980 Ti stopped working too. :)

All good, I really appreciate your efforts to find a solution. Take your time with the next version but feel free to throw test GPU files my way for testing (seeing as you don't have a multi GPU setup to test with at your end).

A fully functional Cycles inside XSI will be a huge asset to the community and you're very close to delivering that achievement.

User avatar
FXDude
Posts: 1129
Joined: 19 Jun 2012, 21:59

Re: Cycles for Softimage

Post by FXDude » 22 Oct 2017, 07:42

A few notes ::

If you get black renders, it probably has to do with default light intensities.

In the light's "cycEmission" shader under any light,the default is 5, and the slider soft-limit is 50,
and I had to bump it to 500 to see them, or 1000 to have them bright enough.


Point, Area, and Sun lights all work, but I somehow couldnt get the the skyLight to work.

But applying the "cycEmission" shader to a regular poly sphere worked, and acts as a dome light.

Here is a sample scene with a few things applied,
and a working SunSky setup and includes a basic interior for testing...

     SyclesFirstTry_v15.scn


For other SI versions, here are steps taken for the procedural
sky to work.


When you apply the cySkyTexture to a sphere, it looks like this ::
    Image


So from there you can delete the bottom half polys,
then select all top polys and scale them down in Y
up-to the thin band where all the sky info lives.
    Image


This is the dome seen from the bottom ::
    Image


If you scale the polys down too much, you would see some pinching at the center ::
    Image


Just right ::
    Image


Then you can scale UP in Y the *OBJECT* to more or less a dome,
giving something like this ::
    Image


Other Pics ::
    Image

    Image

    Image

____________

*************
One rather important thing I could'nt figure-out, is how to get the objects UV's from XSI.
The texture used was applied using the spherical projection in the "cycImageTexture" node, (there is also planar, box, etc ....)
but **is there a way to use the object's actual UV's ? **

*************
_____________

On a side note
The shown interior pic at that res and grain level took 20 min on my CPU.

Used the CPU mode because my GPU is a lower mid-range laptop Nvidia 675MX,
and was about half the speed of CPU mode so that pic with my GPU would have been 40 minutes.

A GTX1080 is about 5 times faster than my gpu (so 5x faster than my 40 minutes in gpu mode = 8 min).

And extrapolating that to 1080p res, would be just about ~7 hours on my CPU (or ~14 hours on my GPU),
and would be some ~3 hours on a GTX1080.

Letting it go twice as long, there would obviously be less noise, but not that much, where the denoiser becomes important.

Anyhoo, voilà!

Cheers!

Shekn
Posts: 213
Joined: 30 Dec 2016, 20:18

Re: Cycles for Softimage

Post by Shekn » 22 Oct 2017, 10:08

1. About using skyTexture node. Look at tutorial 3 in HowTo manual. Shortly speaking, you should add background light source, add to it material the node skyTexture and set the sun light to be a child of this background light. To see the texture on rendered image turn off transparent checkbox on Background group of the render parameters.

2. About uv-coordinates. Now Sycles use only one uv-property of the object. If the mesh contains CyclesMesh property, then UV Index value determines the index of used uv-property of the mesh. If there is no CyclesMesh property on the object, then Sycles takes the first uv-property. But on the next update I will add the export of all uv-coordinates to vector attributes and any of them can be available throw the node cycAttribute. Now you can select uv-coordinates of the object by using the node TextureCoordinates. UV-output is actual uv-coordinates of the object, other outputs (Generated, Normal, Object, etc) are automatically generated coordinates. So, you should connect UV-output of this node to Vector-input of the node ImageTexture. Projection of the ImageTexture should be always be Flat.

User avatar
FXDude
Posts: 1129
Joined: 19 Jun 2012, 21:59

Re: Cycles for Softimage

Post by FXDude » 22 Oct 2017, 19:58

Right! the how-to manual! :)

I got the addon from the direct link, and didn't spot a doc in the extracted addon files, but found it made obvious on your site. :ymblushing:

And it is indeed very thorough and straight forward, and describes a TON of features I wasn't even aware of lol.
( direct link in case anyone else missed it :: Sycles HowTo 05-10-2017 Eng.pdf )

Even without the doc, I found everything to be like very easy.

I also suspect using the skylight would be somewhat faster if not emitted from an actual mesh as a main light source
(as is typically the case)


Something else I wanted to ask ::
there seems to be a positional (or focal?) discrepancy between the Sycles camera and the XSI camera, also noticable in the region.
I'm sure you are aware of it, but do you think it is something that can be somehow solved?

For a variety of reasons, if not just for accurate cam positioning in general, but perhaps mostly, since motionblur is'nt supported
this issue prevents generating motion vectors pass (or any other pass) in MR
( even if MB was supported, motion vector pass allows for very quick results )


In the same vein, would 3d motion blur (or motion vector pass?) be a possibility at some point? or is it like a hard limitation?


In any event, kudos on this already truly amazing integration!!

:ymdaydream:
Last edited by FXDude on 22 Oct 2017, 21:03, edited 2 times in total.

Shekn
Posts: 213
Joined: 30 Dec 2016, 20:18

Re: Cycles for Softimage

Post by Shekn » 22 Oct 2017, 20:24

About different camera frames from Cycles and Softimage. I tried to solve it, but without success. And I don't know why this difference appears. Frames coincide with camera aspect = 1.

I will try to implement motion blur. I believe that it is possible, but don't know when this will be done.

User avatar
FXDude
Posts: 1129
Joined: 19 Jun 2012, 21:59

Re: Cycles for Softimage

Post by FXDude » 22 Oct 2017, 21:08

Ok, in the mean time, I just saw a "PASS_MOTION" aov, so peraps that would that be an avenue for MB until then?
(will try it)

thanks again!

User avatar
FXDude
Posts: 1129
Joined: 19 Jun 2012, 21:59

Re: Cycles for Softimage

Post by FXDude » 25 Oct 2017, 15:29

Hi Shekn,

Just to let you know, I actually could'nt quite get the PassMotion AOV to work,
it seems to render just black while other AOV's work fine.

Perhaps for the same reason motion blur itself is not working?
(or perhaps did I miss something else?)


So I went back to considering what prevented using other renders including MR for motion vectors... (or for other things)

For the camera FOV differences, I can see how it may have been tricky,
I was able to visually match diffences between XSI FOV and what is displayed by Sycles,
and the narrower the Field of View, the less the difference between XSI and Sycles...
the wider XSI's FOV, the more the Sycles FOV vired off
but the difference isn't either constant or linear.

Image
Image

So I drawn a big as possible region (fullscreen), and visually matched XSI's FOV to what Sycles was interpreting, ...
Image

... and plotted the results using Fcurves on a null going from 0 to 300.

The red Fcurve is the curve that represents XSI cam FOV, it's linear and ends at 300 in Y, and 300 in X
and the selected curved curve represents the FOV values that Sycles interprets at each 30 degree incement

Image

These are the plotted values...

XSIValue = SyclesValue (Normalized Percentage (or ratio) of XSIValue)
0=0 (1)
10 = 9.999 (0.999/1)
30 = 29.525 (0.984/1)
60 = 56.610 (0.944/1)
90 = 80.193 (0.891/1)
120 = 99.788 (0.831/1)
150 = 116.468 (0.776/1)
180 = 130.435 (0.724/1)
210 = 142.767 (0.680/1)
240 = 153.799 (0.641/1)
270 = 163.944 (0.60/1)
300 = 173.661 (0.578/1)



Here are the same curves but normalized (going to max 1 instead of 300)
with the extra (blue) curves representing the Sycles FOV ratio of XSI's FOV ,
and an inverse of that curve around 1

Image


And with that inversed ratio curve profile ... brings the next question ::
you mentionned that camera FOV is now 1:1 ... so could it -not- be 1:1?

or can the value sent to Cycles be processed by a curve function?

I ... as well as others using Sycles I'm sure, would certainly hope so :)


Here is the process represented by an Ice tree , along with the compound (**and the curve inside the compound**)
    XSI to Sycles FOV.xsicompound

Image

In any event, thanks & let your thoughts!
 

Shekn
Posts: 213
Joined: 30 Dec 2016, 20:18

Re: Cycles for Softimage

Post by Shekn » 25 Oct 2017, 16:17

FXDude, thank you for your research. I will try to fix the difference between XSI and Cycles cameras. Motion pass is empty in Sycles render result because at present time no data transfers to render for rendering this pass. This pass is not working. At all.

User avatar
FXDude
Posts: 1129
Joined: 19 Jun 2012, 21:59

Re: Cycles for Softimage

Post by FXDude » 25 Oct 2017, 16:34

Shekn wrote: 25 Oct 2017, 16:17 FXDude, thank you for your research. I will try to fix the difference between XSI and Cycles cameras.
No prob, and awesome! (for camera fidelity :ymdaydream: )
Shekn wrote: 25 Oct 2017, 16:17 Motion pass is empty in Sycles render result because at present time no data transfers to render for rendering this pass. This pass is not working. At all.
Thanks, that's what I thought, it seems to also be an issue in other Cycles integrations as well for the moment..


*-:)

face
Posts: 57
Joined: 10 Jan 2010, 12:28

Re: Cycles for Softimage

Post by face » 26 Oct 2017, 07:43

I don´t know the parameters you need to set up a camera in Cycles, but here is a part i used in Octane.

Code: Select all

float aspect = static_cast< float >( camera.GetParameterValue( L"aspect" ) );

CVector3 si_up, si_dir, p, t;
CTransformation trans = camera.GetKinematics().GetGlobal().GetTransform( evalTime );
CMatrix4 mat = trans.GetMatrix4();

// UpVector
si_up.PutX( mat.GetValue( 1, 0 ) );
si_up.PutY( mat.GetValue( 1, 1 ) );
si_up.PutZ( mat.GetValue( 1, 2 ) );
si_up.NormalizeInPlace();

// Direction
si_dir.PutX( mat.GetValue( 2, 0 ) );
si_dir.PutY( mat.GetValue( 2, 1 ) );
si_dir.PutZ( mat.GetValue( 2, 2 ) );
si_dir.NormalizeInPlace();

// PositionVector
p.PutX( trans.GetPosX() );
p.PutY( trans.GetPosY() );
p.PutZ( trans.GetPosZ() );

// TargetVector
CVector3 look_tmp;
look_tmp.Scale( static_cast< double >( camera.GetParameterValue( L"interestdist", evalTime ) ), si_dir );
t.Sub( p, look_tmp );

// FOV
float fov = static_cast< float >( camera.GetParameterValue( L"fov", evalTime ) );
if( camera.GetParameterValue( L"fovtype", evalTime ) == 0 )
	fov = float( RadiansToDegrees( 2 * atan( tan( DegreesToRadians( fovTmp ) / 2.0 ) * aspect ) ) );

Shekn
Posts: 213
Joined: 30 Dec 2016, 20:18

Re: Cycles for Softimage

Post by Shekn » 27 Oct 2017, 21:14

Thank you, Face. Your code is really helped to fix the difference between XSI and Cycles cameras. The final code:

Code: Select all

float camAspect = camObj.GetParameterValue("aspect", evalTime);
float fov = camera_obj.GetParameterValue("fov", evalTime);
bool isHorizontal = camera_obj.GetParameterValue("fovtype", evalTime) == 1;
if ((!isHorizontal && camAspect >= 1) || (isHorizontal && camAspect <= 1))
{
	fovGrad = fov;
}
else
{
	if (camAspect <= 1)
	{
		fovGrad = RAD2DEGF(2 * atan(tan(DEG2RADF(fov) / 2.0) * camAspect));
	}
	else
	{
		fovGrad = RAD2DEGF(2 * atan(tan(DEG2RADF(fov) / 2.0) / camAspect));
	}
}

face
Posts: 57
Joined: 10 Jan 2010, 12:28

Re: Cycles for Softimage

Post by face » 27 Oct 2017, 22:40

No problem, if you need also an orthographic camera, it will be calculated with:

Code: Select all

if( camera.GetParameterValue( L"proj" ) == 0 ) {

	// CVector p/t  from the above code segment
	
	CVector3 tmp;
	tmp.Sub( p, t );

	float fact = ( float )camera.GetParameterValue( L"orthoheight", evalTime ) * aspect;
	fov = float( RadiansToDegrees( atan( fact / ( tmp.GetLength() * 2 ) ) ) * 2 );
}

User avatar
FXDude
Posts: 1129
Joined: 19 Jun 2012, 21:59

Re: Cycles for Softimage

Post by FXDude » 01 Nov 2017, 01:23

Hi, just to say :: Thanks for the valuable insight face!

Post Reply

Who is online

Users browsing this forum: No registered users and 2 guests