Subdiv Modeling Standards

In order for the Low Poly version of the same model to be used in AR and the High Poly version of the same model to be used in the Viewer, there are guidelines that need to be followed for this to work. The most important point here is that the model needs to be correctly modeled so that it works perfectly with the OpenSubdiv modifier. The goal is that the model won’t require any modeling or layout updates when an OpenSubdiv modifier is applied. In order for the OpenSubdiv modifier to work on the Low Poly model without any further editing, some technical aspects need to be taken into consideration.  

Supporting Edges

Supporting edges are the edge loops that need to be added on both sides from the edge of the layout cut in order to control the curvature that is going to be created by adding the OpenSubdiv modifier.

The logic behind adding support edges is pretty straightforward. Basically, you just need to add two edges along the layout cut edge that will hold the UV Boundary. If there are no supporting edges, there will be UV Boundary and the layout will get distorted. 

supporting_edges.png

Red - Supporting edges; Green - UV Layout cut

 

supporting_edges_1.png

With supporting edges

Without supporting edges

For hard-surface models, it is the same logic. The layout cut needs to be on the very edge of the surface, while the supporting edges will be right next to the edge from both sides.

supporting_edges_2.png

Green - Supporting edges; Red - UV Layout cut

If there is a case where adding an OpenSubdiv modifier on the hard-surfaced models exceeds the polycount limit for the AR version of the model, there is an option to add chamfer instead of an OpenSubdiv modifier. For the Viewer version of the same model, just add subdivision with one iteration.

supporting_edges_3.png

OpenSubdiv Modifier

The transition process from the Low Poly model to the High Poly model in the subdiv process is based on the OpenSubdiv modifier. In order for the modifier to work flawlessly and to be able to be automated, the objects need to be modeled very precisely so that only with adding subdiv modifiers, the object will transition from Low Poly to High Poly, and no further editing will be required. Because of this, we need to be very careful about the layout because if OpenSubdiv is not set up properly, the layout will be distorted.

 

open_subdiv_setup.png

Wrong OpenSubdiv Setup

Correct OpenSubdiv Setup

The proper OpenSubdiv Setup along with the correct supporting edges will not distort the layout like on the image above. Here is the correct setup for the OpenSubdiv modifier.

 

open_subdiv.png

There are 3 main points to keep an eye on while setting up the OpenSubdiv. As you can see on the image to the left, these 3 presets need to be applied:

UV Boundary: 

●       Smoothing set to Smooth (Edge and Corner)

●       Check Propagate Corners

●       Uncheck Smooth Triangles

Keep in mind that this information is to check that everything is correctly modeled and that the layout is correct when OpenSubdiv is applied. However, the final model itself, when sent for approval, should not have the OpenSubdiv modifier on or be collapsed with the modifier. The final model sent for approval should always be in the lowest polycount version (base model form), both by modelers and by QA.

By following the standards for creating a Subdiv model, the AR model should be almost as perfect as a High Poly Viewer model and still be within the polycount limit. In addition, a test model is presented that was done following the standards from above.

 

mceclip6.png

This is the Low Poly model for AR with one iteration of OpenSubdiv added to the upholstery and legs. The polycount is 22.000 quads or 44.000 triangles in the geometry.

 

mceclip7.png

This is the High Poly model for Viewer with two iterations of OpenSubdiv added to the upholstery and one iteration to the legs. The polycount is 94.000 quads or 184.000 triangles in the geometry.

Naming Suffixes

The Subdiv modeling process is fully automated in a way that we only upload the base model (lowest polycount version of the model) to the Cylindo platform, and the platform itself divides the models into two parts: one for AR and one for Viewer.

The way that the process can be automated is to have the platform add the OpenSubdiv modifier on the objects with the correct number of subdivision iterations. To give this information to the platform, we need to add suffixes as an addition to the names of the objects in the layer structure of the model. The suffixes are “SD,” meaning SubDivision, referring to the Viewer model, and “ARSD” meaning Augmented Reality Subdivision, referring to the AR model, followed by a number 0, 1 or 2 meaning subdiv iterations depending on how many subdivision iterations the objects need to have.

Name1_SD0_ARSD0

This means that the object will have 0 subdiv iterations in Viewer and 0 subdiv iterations in AR

Example: Logo_Tags_SD0_ARSD0

Name2_SD1_ARSD0

This means that the object will have 1 subdiv iteration in Viewer and 0 subdiv iterations in AR

Example: Legs_SD1_ARSD0 

Name3_SD2_ARSD1

This means that the object will have 2 subdiv iterations in Viewer and 1 subdiv iterations in AR

Example: Upholstery_SD2_ARSD1 

Name4_SD1

This means that the object will have 1 subdiv iteration in Viewer, and it won’t be used in AR

Example: Glides_SD1

Name4_ARSD0

This means that the object will have 0 subdiv iterations in AR, and it won’t be used in Viewer

Example: LP_Stitches_ARSD0

Name5_SD0

This means that the object will have 0 subdiv iterations in Viewer, and it won’t be used in AR

Example: HP_Stitches_SD0 

NOTE:

The SD0 suffix is also used for legacy models that are already collapsed as High Poly models. These models already have a highly dense topology, so adding more subdivision iterations can result in the model crashing and not being able to upload to the platform.

The SD0 suffix can also be used on models that cannot be modeled in Low Poly version, such as rattans and outdoor furniture, office furniture, engravings, slipcovers, and similar models.

In the following section, there is an explanation of the process for such cases.

Modeling and suffixes

With the Subdiv process, we are able to have the Low Poly model for AR and the High Poly model for Viewer in one single scene. But as mentioned above, there will be cases where that would not be possible. Cases in point are: rattans and outdoor furniture, office furniture, engravings, slipcovers, modulars and sectionals, tufted models, and other products.

Regardless, in order for us to have a standardized workflow and processing, it will be required that even for products where the same model cannot be used for both AR and Viewer to still be a product that will function with both modules. This is the subdiv process for all cases:

  • If it is possible to use the same geometry for AR and Viewer, then this is the process:
    • Add suffixes SD and ARSD with numbers representing the level of subdiv iterations. Example: Upholstery_SD2_ARSD1
  • If the same geometry cannot be done for both AR and Viewer, then the process will be:
    • Model the AR object (for example: Upholstery) to the point where you are satisfied with the quality and polycount.
      • Name that object Upholstery_ARSD1 (or ARSD0 if you want to send it collapsed)
    • Make a copy of that object and name it Upholstery_SD1 (or SD0 if you want to send it collapsed)
      • Continue adding details for the High Poly model as much as you like since it won't be dependent on the polycount for AR.
  • If you are working on legacy projects, for examples, sectionals from already approved models, then the process will be:
    • Use the models provided to you (which, in 90% of the cases, will be High Poly collapsed models)
    • After you are done with the combination, the high poly elements need to be optimized to be AR compatible despite models belonging to a legacy project or batch not having a low poly version. If no compatible low poly version is provided the pipeline will not accept the fbx file to be uploaded.

Object can be used in both AR and Viewer

Upholstery_Upholstery

****Upholstery_SD2/1/0_ARSD1/0

Object cannot be used in both AR and Viewer

Upholstery_Upholstery

***Upholstery_ARSD0/1

***Upholstery_SD0/1

Legacy collapsed High Poly objects

Upholstery_Upholstery

***Upholstery_SD0
***Upholstery_ARSD0/1

Was this article helpful?

0 out of 0 found this helpful
Have more questions? Submit a request