How do Keyshot units work???

Started by 9krausec, June 01, 2018, 12:51:01 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

9krausec

A few questions in regards to units in Keyshot.

What are Keyshot's default units? On startup of a fresh scene, no units are selected-


If I'm importing an FBX from a DCC app that runs in meters (Houdini) and I switch units to 'meters' BEFORE importing and import in the meter based FBX (Houdini's default is in meters once again), my 1m x 1m x 1m  cube imports into Houdini seemingly 1000x too small-


Now if I leave the units alone and import the 1m x 1m x 1m cube this is how the cube comes in-


^ A bit larger, but if the grid size is any indication of units then still way too small (unless unit size is 100m..)

NOW, if I import in both the 1m x 1m x 1m cube from Houdini and a 1m x 1m x 1m cube from solidworks, I get this-


AND... here is a  screen shot of four 1m x 1m x 1m cubes imported from Solidworks, Rhino, Maya AND Houdini in the same scene -



So... What is the best way to work with Keyshot Units so it's not some sort of guessing game?! What is Keyshot's default unit? What dimensions are keyshot's primitive geometry cube? In your "Geometry View" mode what units are the grid!

What's best practice working with Maya, Houdini, Solidworks and Rhino imports into Keyshot for consistent results? I'd like a response from a Keyshot developer if possible.

9krausec

Bump! Sorry for the hassle, but I'd imagine this would be a straight forward enough question. I'm assuming the default units is centimeters at this point, but I'd like to confirm this. Documentation doesn't really seem to go too in-depth into this subject.

If someone could confirm that each unit on the grid is a centimeter (or other unit), that would be a good place to start! Just looking for some sort of baseline right now. Maya default units or cm, Houdini is meter, although different units can be selected in preferences, DCC applications tend to have defaults that are adhered to in production to make everything consistent.

Thank you!

jhiker

I'm watching this with interest as Keyshot units have regularly baffled me too. It can lead to some really odd/unpredictable results when applying/scaling textures, etc.

9krausec

Great! It's good to know that I'm not the only one who finds units in Keyshot wildly ambiguous. Hopefully someone more knowledgeable in the topic will help us out here. :)

menizzi

I can't help you but i would send a support ticket to Lux. Just look at home many zero reply topics are on the front page. Im looking for more active forums that work with key shot and if i find them i will let you know. 

TGS808

Quote from: 9krausec on June 01, 2018, 12:51:01 PM
What is Keyshot's default unit?

The default scene is unit-less. Seems best to decide your units before importing anything. If you are modeling in mm, set the KS scene to mm and then import your models. My statement on the default scene being unit-less is based on this post in which Dries (a Product Specialist at Luxion) states that a scene he set up as a demo is unit-less.

https://www.keyshot.com/forum/index.php?topic=20464.msg86790#msg86790

The scene they are referring to is here:
https://blog.keyshot.com/how-to-create-subtle-hairline-scratches-in-keyshot

Quote
What dimensions are keyshot's primitive geometry cube?

It would seem that would depend on when it is added to the scene. If you already have a model or models in the scene, the KS geometry that is added will be roughly one tenth the size of the largest piece of geometry that is already in your scene. So if you add a cube (or any primitive) to an empty scene, then add your model (which for this example is larger then the cube) and then add another cube, the second cube's size will be based on your model. It will not come in at the exact same size as the first cube. So, there is no "default" or exact dimensions of the primitives as far as I can tell. The "one tenth the size of the largest piece of geometry" info comes from this video by Will Gibbons (Training Specialist at Luxion). Start watching at about 7 minutes, 30 seconds in. That's where he mentions it.

https://youtu.be/El2zspJKpoQ




9krausec

Thank you for your reply, after reading your post and watching a bit of that video, can you please confirm the below-

In a fresh scene, there are no default units until specified by the user. Once units are specified it can be safely assumed that each of the grid blocks in geometry view represent one of those units which can then be used as a baseline to make sure proper scale is used in production?

Is this correct?

TGS808

Quote from: 9krausec on June 12, 2018, 05:39:21 AM
In a fresh scene, there are no default units until specified by the user.

Yes, I believe that is accurate. When you start a new scene, if you go to the scene tab, under Scene Information you will see it says "Units: Unknown". After you set it, it will update to your chosen units. Once the units are set for a scene it will stay that way the next time you open the scene. Each fresh scene starts as "unknown" though. I have also noticed that if I model in millimeters in Fusion 360 and import the model into a new scene, the scene will update from unknown to millimeters upon import of the model.

Quote
Once units are specified it can be safely assumed that each of the grid blocks in geometry view represent one of those units which can then be used as a baseline to make sure proper scale is used in production?

I can not answer definitively about the ground grid in the geometry view. In fact when in geometry view I pretty much always have that grid turned off. What I can tell you though is that if you model all your stuff to the proper scale, and have the proper units set in KeyShot, KeyShot will maintain the proper scale throughout the scene.

mattjgerard

Quote from: TGS808 on June 12, 2018, 06:53:57 AM

I can not answer definitively about the ground grid in the geometry view. In fact when in geometry view I pretty much always have that grid turned off. What I can tell you though is that if you model all your stuff to the proper scale, and have the proper units set in KeyShot, KeyShot will maintain the proper scale throughout the scene.

This is probbaly the best answer the way Keyshot behaves and is intended to be used at this point. While it is nice to be able to know scaling and sizing and everything from within KS, the reality is that the original intent was not to do any of that within KS. Set your scene up in whatever DCC app you use, shoot it to KS for render.

But, that is changing. People are asking for more modeling and assembling abilities from within KS itself. At least being able to bring in different assemblies and parts and know that they are to scale with each other. For myself, if I am assembling a scene, I do it all in Cinema4D then shoot it to KS. if I need to change something, I try ti use the Live Linking features, which sometimes works sometimes not. Operator error, most likely. But anyways, I am finding myself more and more wanting to do simple assembly of a scene from within KS.

One thing they were very clear with us at Renderworld, is that if there is enough noise about a subject, they will look into it. I would suggest to post something in the wish list section, and also email your distrbutor or support and see what they say about the units and scaling parts of KS getting some love in the next release.

Speedster

Well, I'm going to add to the noise!  This Size/Scale/Units thing drives me nuts!

I often have to combine or add assemblies to my client's projects.  They may simply send me something and say to add it in.  Yep...

They are all designed full size in SolidWorks, so you would think they would each import to the same scale, but they never do, and are all over the place in scale and size.

To avoid this I always create a "KeyShot Assembly" in SW, with everything brought in and mated to some degree, and they can be shoved around in KS.  If they surprise me with a new assembly, I simply add it in to the SW assembly and use "Update".

So consistency in import is very important to add to the fix list.

Bill G


9krausec

Thank you all for the information. It seems that the way Keyshot handles units is not conducive to a production environment that exceeds one-off renders. Without baseline units to work off of, the user seems more-or-less forced to base various imports in relative scale to one another. Lack of reference units also adds unnecessary strife to the production and maintenance of a custom material library.

I've always been led to believe that light and materials in rendering are affected by extreme scales. To add to this, I've also been under the impression that GI (depending on the type of engine) will also be affected by extreme scale situations (far too small, far too large). If round corners render time effect are driven by normals, incorrect scale could also pose a potential issue.

Furthermore, when handing imports from multiple software, consistency doesn't seem to be observed from where I'm standing (cubes from the original post).

To salt the wound, Keyshot references mm units in it's material library (translucency)-

I've stopped being surprised at this point throughout my Keyshot misadventures. If the grid would represent the chosen units or there was any way to measure objects directly inside of Keyshot, the situation would be much less convoluted.

Anyone know if Luxion will be attending Siggraph in Vancouver this year? It would be nice to see what the future holds for the software if they are presenting.

Will Gibbons

Quote from: 9krausec on June 13, 2018, 05:57:02 AM
Thank you all for the information. It seems that the way Keyshot handles units is not conducive to a production environment that exceeds one-off renders. Without baseline units to work off of, the user seems more-or-less forced to base various imports in relative scale to one another. Lack of reference units also adds unnecessary strife to the production and maintenance of a custom material library.

I've always been led to believe that light and materials in rendering are affected by extreme scales. To add to this, I've also been under the impression that GI (depending on the type of engine) will also be affected by extreme scale situations (far too small, far too large). If round corners render time effect are driven by normals, incorrect scale could also pose a potential issue.

Furthermore, when handing imports from multiple software, consistency doesn't seem to be observed from where I'm standing (cubes from the original post).

To salt the wound, Keyshot references mm units in it's material library (translucency)-

I've stopped being surprised at this point throughout my Keyshot misadventures. If the grid would represent the chosen units or there was any way to measure objects directly inside of Keyshot, the situation would be much less convoluted.

Anyone know if Luxion will be attending Siggraph in Vancouver this year? It would be nice to see what the future holds for the software if they are presenting.

I'll be attending Siggraph along with a few others. Be sure to stop by and we can talk shop.

soren

#12
We try to be consistent with the unit handling in KeyShot. If this is not your experience we apologize and we would, of course, like to know of any bugs you may have found.

I will try to explain the intended behaviour of KeyShot scene units with respect to geometry and materials. The default scene in KeyShot (startup.bip) is unit-less. The intenteded workflow is to import your geometry and select the desired unit in the import dialog. Most file formats support some notion of unit, and this unit is taken over by KeyShot after import. That is, if you import a file in mm, the new unit in KeyShot will be in millimeters. Not all formats have consistent unit-handling, but we try to detect where possible.
If you import some geometry modelled in e.g. mm into a KeyShot scene in another unit (e.g. meters) the imported geometry should be scaled to match the unit in the scene you import into (meters in this case). If this is not the case, it is a bug. I just tried to import a cube modelled to 3 in in Solidworks into a Creo assembly modelled in mm and the cube came in at 76.2 mm as expected.

To see the size of your geometry, check the Scene Tree Properties tab - there should be a field that says "Size". It should display the size the bounding box of your geometry in world space with units. Note that this may be slightly different than what you experience in the modelling tool due to tesselation or rotations of the parts inside the model.

The KeyShot Edit-menu primitives are unitless and are handled specially (behaviour changed in KeyShot 7). They are, as Will stated, imported at 1/10th the size of the scene. This is in order to make them visible when working with large scenes and you need primitives at a convenient size for lights or a pivot point etc. It also has the peculiar consequence that importing a cube twice into an empty scene will result in two cubes of different sizes - one 1/10th of the first.

If KeyShot is unable to detect the unit in the file you import, there is typically an option in the import dialog where you can set how to interpret units in the file you try to import. This occurs for obj-import for example.

KeyShot 7 received some attention regarding units for materials. Before KeyShot 7, material parameters relating to distances in the scene were implicitly in scene units (whatever thet were). This made it hard to reuse materials across different scenes with different units.
In KeyShot 7, a 50 mm transparency distance for Translucent (or a Liquid or Glass etc) is in fact a 50 mm transparency distance - e.g. 5 cm in a scene with centimeters as a unit and about 1.97 inches if you happen to work in inches. The same applies to texture sizes when using a mapping supporting units (e.g. Box mapping).

If we return to the original example with the cubes above, it does look as if Solidworks, Maya and Rhino import correctly. The size of the Edit-menu cube will depend on when it was imported so it is not a useful reference. The only thing that deviates in behaviour from the behaviour described above is the Houdini 1m cube - why this should import like this (to 1 mm in size perhaps?) is not clear and it may be a bug or a problem with the file itself. Please use the Scene Tree Properties Size field to investigate the size.

Regarding the goemetry view grid size, please note that there is no units written. This is because it is a rough size based on the size of the environment - it is not in any specific unit! This is probably not ideal and it is perfectly understandable if this is a source of confusion.

Hope this clarifies a few things. As I wrote initially, we are always keen to hear of any bugs you may have found.
Please contact support if you have any further questions.
Søren

9krausec

@Søren-
Your reply cleared up a few things for me. Thank you for taking the time to reply. It's good to know that the bounding box information can at least be viewed to confirm that Keyshot imported at the correct scale or not.

per my previous post-
"...If the grid would represent the chosen units or there was any way to measure objects directly inside of Keyshot, the situation would be much less convoluted."

Bounding box information works for me!

Cheers.

@Will Gibbons -
I'll be sure to bee-bop your way at Siggraph if I happen to run into you. Thanks.

Will Gibbons

Quote from: 9krausec on June 19, 2018, 01:55:16 PM
@Will Gibbons -
I'll be sure to bee-bop your way at Siggraph if I happen to run into you. Thanks.

Sounds good!