Inside Sabertooth
Learn how Sabertooth uses 3ds Max to create 3D interactive projects, including HBO Go’s Game of Thrones interactive experience
  • 1/3
You are here: Forum Home / Autodesk® FBX® / FBX SDK / cannot get materials from fbx files exported from revit
  RSS 2.0 ATOM  
2 pages: 1.2 last

cannot get materials from fbx files exported from revit
Rate this thread
 
48970
 
Permlink of this thread  
avatar
  • Max2u
  • Posted: 01 November 2010 02:22 AM
  • Total Posts: 5
  • Joined: 15 September 2009 09:42 AM

Hallo there,
im using the FBX SDK 2011.3.1 to read fbx files, well the problem is that i cant get material from fbx files exported from revit 2011, well i tried the code pNode->GetMaterialCount() and it always return 0 while importing the file into 3dsmax 2011 gets the materials, and exporting it from 3dsmax 2011 to fbx and using the same code (pNode->GetMaterialCount()) returns some materials.

well with some investigation i found out that there is something called “Protein 2.0 appearances” that is new mental ray materials for revit and 3dsmax and maya and autocad 2011, and i noticed that there is Protein 2.0 conventions in conventions.h but i didn’t find any reference that might help me, supposing im looking in the right direction.

any ideas or hints would be great.

thanks.

Sameer Ababneh.



Replies: 0
avatar

Can you post an example?
Use .zip



Replies: 0
avatar
  • Max2u
  • Posted: 01 November 2010 06:28 PM

Hello Doug,
i have attached fbx file exported from revit, this file imports with materials i 3dsmax but it dont in the fbx sdk 2011.3.1, i even tryed it using the ImportScene example that comes with the sdk and it couldn’t find any materials

thanks



Attachment Attachment
Replies: 2
/userdata/avatar/3yvwf23us_doug100x100.png

It looks the material data is stored in a Revit specific way.  You may be able parse the meta data and get the materials.

Author: Doug Rogers

Replied: 02 November 2010 03:56 AM  
/userdata/avatar/3yvwf23us_doug100x100.png

Convert the file to ASCII to see the data.  There are some properties and a blob of data which may contain what you are looking for.

Author: Doug Rogers

Replied: 02 November 2010 05:27 AM  
avatar

Hi, Max2u,
Protein 2.0 material is not a part of FBXSDK, but something only supported in applications like Revit and 3ds Max.
So there is nothing in FBX SDK can handle Protein2.0 materials yet, it only existed in FBX file as blobs which will be thrown into 3ds Max as a whole and then processed by 3ds Max.
And as far as I know, there is no plan to include Protein 2.0 materials in FBX SDK yet.
So for now you can only use Protein 2.0 materials in the scope of applications.



Jiayang Xu
Maya Data Platform
Autodesk

Replies: 2
/userdata/avatar/3yvwf23us_doug100x100.png

Can you provide the format of the data blob so he can parse it?

Author: Doug Rogers

Replied: 02 November 2010 04:16 PM  
/img/forum/dark/default_avatar.png

That is fine that you are including your own proprietary data in the FBX file so that 3ds max can use it, and that you don’t want to expose that to others.  However, can you not also use the FBX file to store FBX materials so that 3rd party applications can use the “platform-independent 3D Data Interchange Technology” to read the materials at least in a limited way?  Otherwise, Revit FBX files are kind of worthless to 3rd party applications, wouldn’t you agree?

Author: rwblodgett

Replied: 15 December 2010 02:59 AM  
avatar
  • Max2u
  • Posted: 02 November 2010 08:30 PM

hello there,
i was aware of that there is a blob in the file, i was hoping that there are some magical way in the sdk that helps me to read the material from that blob,
and yes Jiayang, is there any thing that helps me reading this blob??



Replies: 1
/userdata/avatar/vx3501hqr_small.jpg

Sorry, but I am afraid we are not allowed to do so. :(
Protein 2.0 is something not opened and with a pretty complex structure. And to parse it need a whole materials library system to support, which is also not opened.

If you could tell us why you need to parse these material for what kind of task, then you may add a cent to the possible future plan to make this kind of operation available. But since this is totally out of control of FBX, I cannot guarantee anything :(

Author: Jiayang Xu

Replied: 02 November 2010 09:37 PM  
avatar

I am having the same problem, of the node reporting a 0 material count (and null material reference), but the material layer reporting it does have a material, from Revit 2011 fbx.

This works just fine in Revit 2010.  The exported fbx file node in question does have the right number of materials and returns a reference to it.  node->GetMaterial(id);

Has someone found a solution to this problem for 2011?



Replies: 1
/userdata/avatar/vx3501hqr_small.jpg

As I stated above, Revit 2011 is using a new material system which cannot be handled by FBX SDK yet.
That’s why Revit 2010 is fine but 2011 got this problem.

Author: Jiayang Xu

Replied: 20 December 2010 02:19 PM  
avatar
  • Buzert
  • Posted: 28 January 2011 06:14 AM

Yes I can give you a very good reason to include the abilty to process, store etc protein 2 in FBX.  Because without it you can’t get Revit files into Maya.  I see no point in having a cross platform file format that does not cross over into Maya.

So please make revit files compatible with Maya.  Is this the plan???



Replies: 1
/userdata/avatar/vx3501hqr_small.jpg

Yes. That is then plan.
1. There already existed an internal converter to convert protein 2 material to FBX compatible materials.
However, we do not know when this will be public.
2. If I remember correctly, Maya already supported Protein 2 material now, but I do not remember the exact version, you may ask on Maya’s forum. So for sure the FBX plug-in for Maya will follow that too at some point.

Author: Jiayang Xu

Replied: 29 January 2011 03:51 AM  
avatar
  • narlee
  • Posted: 21 March 2011 02:16 PM

"Platform-independent.” It is far from it. FBX doesn’t work properly exporting to many 3rd party renderers. And there are plugins that work in AutoCAD that can’t work as well in Revit because of this limitation. Ridiculous. Makes AutoDesk look petty.

Don’t get me wrong. I have no problem with AutoDesk restricting interoperability. As long as they’re honest about it. Notwithstanding the fine print in their statements.



Replies: 0
avatar
  • jfyelle
  • Posted: 22 March 2011 05:55 AM

Hello all,

I’ll try to clarify a few things and collect your feedback.
Let’s face it, interop is a difficult topic. FBX has 15 years and is far from having completely resolved the problem its targeted at. What for?

1. Revit-Maya interop

FBX was created by Kaydara to support 3D information from 3ds Max/Maya/Softimage|3D to go into FiLMBOX and to get animation data back in the original software. that`s for the entertainment business.

Nowadays, because products like 3ds Max and Maya are used in other industries like automotive, fabrication or architecture, the problem list expands… Why is that so? these software defines 3D object with solids, not polygons, Revit use a database (BIM) which is a collection of metadata that is difficult to use outside this paradigm, etc.

In this topic, we’re interested in Revit-Maya material support.
Maya is a product targeted at the entertainment business.  It does not support Protein materials (the new materials for the 2011 ACAD, Revit, Inventor products) and until it does, won’t be able to support files coming from Revit.  3ds Max and 3ds Max Design do support these, however… A solution could be to use 3ds Max instead.

I’ve looked if it was possible to automatically translate the protein materials into good old FBX materials while in Max. Unfortunately, It’s not.

2. renderer material data interop

The big picture is that while FBX is an interchange format, the data it carries may not be supported by all.  More specifically, the material information carried by FBX materials (or protein materials) does not resolve anything for the interoperability across renderer. 

I personally don’t think it`s an easy problem… the parameters used drive different shader(s) (or worse, assemblies of shader fragments).  The resulting images won’t be necessarily predictable until a visualization expert tells how to approximate a look on renderer A to a look on renderer B. And then, it will work for a specific look on specific builds of renderer A and B.  Who’s up to ensure (and maintain) global automated correspondence between Mental Ray, Maxwell, Renderman, Arnold, Brazil and VRay?

Until superman comes, artists are stuck with the manual/visual translation of material information from a renderer to another one.

Hope this helps a bit understanding the situation and what can be done,
don’t hesitate to comment or question,
I’ll be happy to discuss.



Jean-François Yelle, Product Manager
Autodesk Media and Entertainment division

Replies: 1
/userdata/avatar/3yvwf23us_doug100x100.png

Inter-operability is a hard problem, however Autodesk has the ability to solve this in their own product line.  External products will follow your lead.

1. Revit-Maya interop
The legacy/history of FBX should have no bearing on an interoperational file format.  If FBX has issues, then use a different format or expand the functionality of it.  It is more important to have a file format that “just works” vs. one that has issues or legacy problems.

IMHO, the FBX file format should be a super-set of the functionality of all the programs that it supports. There should not be proprietary blobs of data that other programs cannot read.

Furthermore, developers wish to use the FBX format to import into their programs, so having materials that cannot be parsed at all is problematic.  I know that this is not a priority, but it makes using the FBX format frustrating.

2. renderer material data interop

...while FBX is an interchange format, the data it carries may not be supported by all.

This is exactly the thing that should avoided at all costs and should be considered a bug, certainly within the apps that you control.  You can’t call it an interchange format if there are proprietary fields generated from standard programs.

If Revit creates materials, the FBX format should be expanded to allow for those materials to be used in other programs. 

Autodesk can solve this in a standard way.  Just a list of materials is not sufficient.  Look at the Unreal Editor, for example, you can create surface materials and save them for use later.  Store the shaders or use a shader graph, anything that allows more sophisticated rendering.  Start the process and iterator it over revisions.  This also leads me to observe that the frequency of SDK updates is at best, slow.

Renderers don’t need to produce the exactly the same look.  What is needed is the ability to read what is stored in the FBX files across applications.

Author: Doug Rogers

Replied: 22 March 2011 09:53 AM  
avatar
  • jfyelle
  • Posted: 23 March 2011 02:44 AM

Doug,

There are 2 issues really

1. Maya can’t currently deal with the material information coming from Revit. This isn’t a bug, it’s a feature.
2. The Autodesk materials Revit exports (aka Protein 2.0) are currently saved in a proprietary binary blob. Getting an API to extract the data, or serialize it in a readable fashion (ASCII) are also 2 features that could resolve the same problem.

However, I know for a fact you could query the material properties out of the Revit API. If it’s that important, I guess it’s a way to get to the data.



Jean-François Yelle, Product Manager
Autodesk Media and Entertainment division

Replies: 0
avatar

jfyelle 23 March 2011 09:44 AM

Doug,

There are 2 issues really

1. Maya can’t currently deal with the material information coming from Revit. This isn’t a bug, it’s a feature.
2. The Autodesk materials Revit exports (aka Protein 2.0) are currently saved in a proprietary binary blob.

As for #2, it does not solve the problem of using Revit outside of its host environment.

Both can be solved by not using proprietary blobs of data, but extending the FBX format.  Whose proprietary format is it?



Replies: 3
/userdata/avatar/bnmm1mzg2_jf_100x100.jpg

Agreed.

the Autodesk materials (aka Protein 2.0) are a company wide component.
It was developed as an ongoing a multi-year effort. 
This binary blob is embedded in FBX, DWG, inventor files, etc.
A public facing API is being considered.
This would eventually permit the binary blob access within a file format API

Meanwhile, there’s no way to easily access the data contain in the ADSK material binary blob transported any format (FBX included).
It is possible, however to access material information through product APIs supporting the ADSK materials.
within 3ds Max : accessing the ParamBlock2 data using the Max SDK (or Maxscript)
within Revit : accessing the material appearances within the BIM

As maya does not support the ADSK materials at this point, it won’t be possible to access the data through MEL or their Maya SDK.

thanks

Author: jfyelle

Replied: 23 March 2011 04:03 AM  
/userdata/avatar/3yvwf23us_doug100x100.png

//need to have reply to reply on this forum.

A public facing API is being considered.

IMHO, this should be added to the FBX SDK, since FBX is considered your universal interchange format.
Any time you are considering adding a new proprietary blob of data, I think the FBX SDK should be updated to read and write that data, as POR.

Author: Doug Rogers

Replied: 23 March 2011 04:24 AM  
/userdata/avatar/uxh72ggpe.jpg

//need to have reply to reply on this forum.

A public facing API is being considered.

IMHO, this should be added to the FBX SDK, since FBX is considered your universal interchange format.
Any time you are considering adding a new proprietary blob of data, I think the FBX SDK should be updated to read and write that data, as POR.

Problem with that is it would grow the FBX SDK by _a lot_, which is currently technically not suitable.

Author: Robert Goulet

Replied: 14 May 2012 01:56 AM  
2 pages: 1.2 last