23 Nov 2021
Model Derivative SVF2 enhancements - Part 1 Viewer
Model Derivative SVF2 enhancements
The release of SVF2 into the Model Derivative pipeline allows customers to have better performance in Viewing models, especially those coming from Revit. The Model Derivative service produces SVF2 derivatives by optimizing and sharing meshes within the same Viewable, and even across multiple Viewables when possible. Because of this optimization, SVF2 format reduces the Viewable storage size and speeds up viewing and loading performance. Note that SVF2 will take longer to translate and we are still working on a small detail where the “progress” can return 99% during the SVF2 processing. Some customers have reported this 99% status lasts for a while, but for the moment this is normal. The engineering team is working on providing a better status solution. Using Webhooks is a better approach and will work with Model Derivative SVF2 translation jobs.
The Forge Viewer compliments the performance of SVF2. To correctly view SVF2, you need to specify specific parameters. The Viewer uses two parameters to help indicate where the Viewables are coming from. SVF2 env and api Viewer values have been updated. The values are env=’AutodeskProduction2’ and api=’streamingV2 / streamingV2_EU’. During the beta cycle, we used MD20xxx and D3S values for env and api, and those are now deprecated and will result in a console warning, but it would still work. For example, these would be specified in the Viewer options like this:
options = {
env: 'AutodeskProduction2',
api: 'streamingV2', // or streamingV2_EU if in EMEA region
};
When using these new options, the Viewer can determine whether it should load the SVF2 derivative, or SVF derivative. Using the above values will allow the Viewer to also have “fallback” behavior. If the URN of the model is SVF2, you will load the SVF2 model if it is available. But if the URN does not include SVF2 derivatives, it can “fallback” to the SVF derivatives if available. This is especially important in the case of using the BIM 360 docs service. Because the newest jobs produced by BIM 360 docs is typically SVF2 format, you can specify the latest viewer parameters, and in the case where there might be legacy data and only SVF is available, it will still work due to this “fallback” behavior. Here are the Viewer docs that added the changes (see 7.48: https://forge.autodesk.com/en/docs/viewer/v7/change_history/changelog_v7)
Let’s discuss BIM 360 docs in more detail...
BIM 360 Document Management
Because the customer side does not have any control over which type of job is produced, nor as a developer can you easily know what SVF format is available, there are a few approaches to be sure. From Forge Viewer perspective, because there is still migration going on from the legacy OTG workflow, you can still use the isOTG() and isSVF2() APIs to determine which underlying process is used. This may help in troubleshooting problems and is helpful for our support group to know if you are reporting issues. Because of this, here is some guidance to know which BIM 360 Docs pipeline was used to generate the derivatives:
- Legacy OTG Generation pipeline: isOTG() = true, isSVF2() = false
- New SVF2 generation pipeline: isOTG() = true, isSVF2() = true
- SVF Generation pipeline: isOTG() = false, isSVF2() = false
You can easily test these flags by using the APIs from the View. For example, in a console window:
> NOP_VIEWER.model.isSVF2(); // similar for isOTG()
true
When talking about BIM 360 docs output types, also note that currently only these formats are being translated to SVF2: RVT, IFC, NWD/NWC, DWG and IWM. Other formats such as DGN, FBX, etc. are still being translated to SVF.