Jump to content

Scale problem from Maya to Houdini


sultan

Recommended Posts

Hello everyone :)

 

i've modeled an object (ship) of 40 feet in Maya by measuring its length using the Distance Tool (from Create->Measure Tools-> Distance tool) and setting the scene in feet units (from Window->Settings/Preferences->Preferences->->Settings->WorkingUnits: Linear = foot)

 

That 40 feet object should be around 12.192 m (when converted from feet to meter as 1feet = 0.3048m)

 

But when i import that model (.obj) file in Houdini, its massive in scale!!!

Whereas it should come on the grid since Houdini's unit is meter and 12.192 m is not that big as compared Houdini's default Grid.

i've even checked it against a Cube with 12.192 m length

 

i need to create a ship sim with Ocean tools and Flip sim. But i cannot do that since the object is Huge. i dont want to scale down the model as i want to know reason behind this mismatch of scale between Houdini and Maya.

 

Kindly help me as what is the problem and how to solve.

 

 

Thanks & Regards

Link to comment
Share on other sites

check the obj file if the values are correct exported when there are in foot houdini won't know it so it uses the default unit value (meter). you can use fbx i think there you won't have troubles because the unit values are in the file defined.

Link to comment
Share on other sites

the measure tool in Maya is doing this:

measure the number of UNITS

units X scene scale (feet) = 40 units of one foot/unit

 

but in Houdini this means nothing

 

in Houdini this is just 40 units - it doesn't know anything about you scene scale...

so it makes your model 40 units = 40 meters

 

you'll have to do one of two things:

change the scene scale in Maya to meters and re-export

scale the model in Houdini

Link to comment
Share on other sites

Hello Mandrake0

 

 

check the obj file if the values are correct exported when there are in foot houdini won't know it so it uses the default unit value (meter). you can use fbx i think there you won't have troubles because the unit values are in the file defined.

 

 

For Obj: There arent any specific option regarding scene scale while exporting obj from Maya.
And Fbx: i exported .fbx file from Maya but Houdini is not recognizing .fbx files. When i still try to import it in Houdini by specifying * in matching files, it doesnt show anything in Houdini viewport.
:mellow:

 

Edited by sultan
Link to comment
Share on other sites

Hi Michael

 

 

the measure tool in Maya is doing this:

measure the number of UNITS

units X scene scale (feet) = 40 units of one foot/unit

 

but in Houdini this means nothing

 

in Houdini this is just 40 units - it doesn't know anything about you scene scale...

so it makes your model 40 units = 40 meters

 

you'll have to do one of two things:

change the scene scale in Maya to meters and re-export

scale the model in Houdini

 

Michael Goldfarb
Senior Technical Director
Side Effects Software Inc.

www.sidefx.com

 

 

 

But then what does Houdini understands when Obj or Abc files are exported from another 3D application ?

i tried your solution on re-exporting geometry with "meters" as units in Maya. But it gave me the same result = BIG HUGE MODEL in Houdini

And i know we can scale objects, but that doesnt clear the reason as how Houdini handles scales of obj and abc exported from other 3D applications to Houdini.

 

 

:mellow:

Link to comment
Share on other sites

Hello Diego

 

 

I agree with Michael. And Maya units won't help you to do much (unless you need to do precise modeling), it's way more important to have precise unit in Houdini for all DOPs operations.

I have always had to scale models in H from Maya and never got any problems with that.

 

FX TD @ Double Negative Vancouver

www.diegogrimaldifx.com

 

 

 

Hmmm.... even i've scaled the model.

 

But still want to know the correct workflow to get correct scale in all 3D applications as its most important.

 

:mellow:

Link to comment
Share on other sites

1) Houdini can recognize FBX files. I use them from time to time.

2) I think you can hardly get the same scale across all softwares unless you hardcode it into your pipeline (not sure if its even possible). Scaling models with a null parent (not model itself!) in each package to fit your needs is standard solution that you cant easily avoid. There is no problem and nothing incorrect about it. 

Link to comment
Share on other sites

Unit like cm or meter are use in 3d software as reference point mainly for humans. When you export things from one software to an other only units matters as michael already pointed out. If you want your model to be 12 meters in houdini make it 12 unit in maya and forget about your distance tool. Imo the good workflow is to use a null with a scale on it. Things from maya (cm) have to be scaled by 0.01 by default, from xsi (dm) by 0.1 and so on...

Link to comment
Share on other sites

Hello  davpe

 

1) Houdini can recognize FBX files. I use them from time to time.

2) I think you can hardly get the same scale across all softwares unless you hardcode it into your pipeline (not sure if its even possible). Scaling models with a null parent (not model itself!) in each package to fit your needs is standard solution that you cant easily avoid. There is no problem and nothing incorrect about it.

 

1). When i import geometry using File SOP, i cannot see .fbx files in the "Choose Geometry" dialog.

      Also in "Show files matching" there isnt any option for .fbx.

      So i change its value to *

      But still i cannot load .fbx files from Maya.

      I used the default options when exporting the .fbx file from Maya.

      Any specific way to export .fbx files from other 3D applications so as to import it correctly in Houdini ?

 

2). Scaling with the null. I thought to scale the model itself without using the null. Is there any specific reason of using Null Object node ?

 

:mellow:

Link to comment
Share on other sites

Unit like cm or meter are use in 3d software as reference point mainly for humans. When you export things from one software to an other only units matters as michael already pointed out. If you want your model to be 12 meters in houdini make it 12 unit in maya and forget about your distance tool. Imo the good workflow is to use a null with a scale on it. Things from maya (cm) have to be scaled by 0.01 by default, from xsi (dm) by 0.1 and so on...

 

 

Excellent SSFX :)  "If you want your model to be 12 meters in houdini make it 12 unit in maya and forget about your distance tool"

i tested with what you said, and its 100% correct.

 

Now i undestood what Michael said. Good one Michael :)

 

Also i scaled down to 0.01, it wasnt exact, but very close to the scale i was hoping to get.

And just to know, why we scale down using a Null Node object and not directly to the model ? Any specific reason ?

 

 

Very nice.

 

Thanks SSFX :)

Link to comment
Share on other sites

Hello tricecold

 

 

Scaling it by 0.01 times should get you the right lenght, then you can simply check it by making a box that is 12.192 units in houdini for comparison

 

 

Yes, you are right :)

SSFX and Michael also said the same.

 

 

 

Finally, we summarize:

 

If object's scale is 1 (in Sx, Sy & Sz) AND-
 
-If Maya's unit is in Centimeter, then:
No need of scaling the object.
As 1 unit in Maya (in cm) is SAME as 1 unit in Houdini (in m)


-If Maya's unit is in Meter, then:
Multiply the object by 0.01 in Houdini to convert in meter


-If Maya's unit is in Foot, then:
Multiply the object by ~0.033 in Houdini to convert in meter


-If Maya's unit is in Inch, then:
Multiply the object by ~0.394 in Houdini to convert in meter


-If Maya's unit is in Yard, then:
Multiply the object by ~0.011 in Houdini to convert in meter

 

 

Thanks all for helping me :)

i hope the above info helps others. Cheers :)

Edited by sultan
Link to comment
Share on other sites

I think you got some of that wrong, here let me explain. Maya default's are centimeters, make a default box in maya, export it as FBX,

in houdini dont use a file node, instead import your FBX from file menu. a file node will also work but use the file menu instead and see how it makes a file node.

 

so now you got your box from Maya in Houdini, make a default Houdini box, they are the same size right. But that is wrong, because your box from maya is modelled in centimeters but now it looks like a meter. so in this scenario you need to scale your boxs from maya 0.01 times.

 

So what?

 

IF you made a sink model in real scale in Maya while working in CM units, and imported this model into maya to run some water, and if you did not scale the model by 0.001 from maya, you water simulation will look like Niagara Falls instead of speedy running water.

Link to comment
Share on other sites

I think you got some of that wrong, here let me explain. Maya default's are centimeters, make a default box in maya, export it as FBX,

in houdini dont use a file node, instead import your FBX from file menu. a file node will also work but use the file menu instead and see how it makes a file node.

 

so now you got your box from Maya in Houdini, make a default Houdini box, they are the same size right. But that is wrong, because your box from maya is modelled in centimeters but now it looks like a meter. so in this scenario you need to scale your boxs from maya 0.01 times.

 

So what?

 

IF you made a sink model in real scale in Maya while working in CM units, and imported this model into maya to run some water, and if you did not scale the model by 0.001 from maya, you water simulation will look like Niagara Falls instead of speedy running water.

 

 

Yes, Maya's default unit is Centimeter.

And yes, i did the test of default Box in Maya (cm) and imported it in Houdini (meter) and created a default Box in Houdini.

Both (Maya-Box and Houdini-Box) were of same size inspite of different units (cm and meter respectively).

 

Got your point tricecold B) on scaling down the geometry if simulation is done on these scales.

 

But, try this: Create a default Box in Maya in Meter units and then import it in Houdini (meter), you get extremely Large Box in Houdini which is not of same size as a default Box of Houdini (which is in meters).

Why this happens ?? now even both Maya & Houdini are in meter scale

 

Waiting for your answer...

Link to comment
Share on other sites

hello sultan,

 

1) you have to use "File>Import>Filmbox FBX" from the top menu if you want to import it. And then you have to hit the Merge button, not Import if you want to add it to your scene rather than add it to a new one. A bit odd but thats the way it works.

 

2) Any transform operations on scaled objects may (or may not) cause incorrect results. You may not notice any obvious problems, however it is unpredictable and may lead to different artifacts and wrong behaviours when applying any transform math on it. This is true to all 3d apps that scaling the object is not a good idea. You should either use a transform SOP inside the object and "scale" the polygons (which is technically not a scale) or use an another object to do the transform. model itself should stay in 1,1,1 scale and 0,0,0 position/rotation to avoid any problems in the pipeline. 

  • Like 1
Link to comment
Share on other sites

hello sultan,

 

1) you have to use "File>Import>Filmbox FBX" from the top menu if you want to import it. And then you have to hit the Merge button, not Import if you want to add it to your scene rather than add it to a new one. A bit odd but thats the way it works.

 

2) Any transform operations on scaled objects may (or may not) cause incorrect results. You may not notice any obvious problems, however it is unpredictable and may lead to different artifacts and wrong behaviours when applying any transform math on it. This is true to all 3d apps that scaling the object is not a good idea. You should either use a transform SOP inside the object and "scale" the polygons (which is technically not a scale) or use an another object to do the transform. model itself should stay in 1,1,1 scale and 0,0,0 position/rotation to avoid any problems in the pipeline. 

 

 

Excellent davpe :)

I followed your steps and you are correct.

 

1)

Created a Box in Maya in Meter scale (meaning Width=Height=Length=1 and their Sx=Sy=Sz=1 as well).

Exported that Box in fbx, by keeping units as meter.

Then,

#1. When imported it from FileSOP, i get big huge Box

#2. When imported it from File->Import->Geometry, i again get huge Box

#3. When imported it from File->Import->Filmbox FBX, i get the correct scale :) (it creates a subnetwork though and inside it, it scales down the object to Sx=Sy=Sz=0.01 using a GeometrySOP which contains a FileSOP which has the .fbx file  )

 

 

2)

Your suggestions on transforming the geometry using either of the following:

Option1. Transform it "inside" the object (ie. by creating a TransformSOP in the GeometryContext and not the SceneContext using the Geometry object)

OR

Option2. Transform the object in the SceneContext using another Object (ie. Using a NullObject and parenting it to your object and then scaling the NullObject)

 

I found the First option better than the second as i've faced problems in giving correct values to 'Division Size' in IsoOfffset and in the VolumeSDF's 'Iso Surface'.

 

 

#1. And i think when we import the Geometry using FileSOP, we can change the scale to Sx=Sy=Sz=0.01 and then use 'Clean Scales' to make the Sx=Sy=Sz=1 which doesnt increase the size back to huge Box. But this requires us to know in what scale (meter, foot, cm) the object was made in Maya and only then we can scale it down to that appropriate number.

 

 

 

Thanks davpe :)

Link to comment
Share on other sites

Hi,

 

yes, I think you got it right now. I`d only have one more note on this. 

 

Its good to realise that scaling the object on SOP level, although completely legal, has two mayor disadvantages:

 

1) on large meshes you may notice that its slower. on multi million meshes it is a lot slower. because instead of doing just a single transform on the object level you are running transform operation over all points in your mesh. 

 

2) since you are applying transform basically as a part of the modeling this is not easily transferable to many objects (you have to do it manually). this may be a very big problem, especially with scenes containing a large amount of objects. It may also be a problem to transfer a SOP transform to some special objects like camera for example. With a null as a transform object, you can simply parent it to all objects in the scene and you`re done. Changes are painless and very quick.

 

cheers, D. 

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...