- Home /
Phong Breaks in Cinema 4D: Is there a workaround?
As has been noted in previous posts, the phong settings in a Cinema 4D are not imported correctly in to Unity, specifically the phong breaks. Until Maxon provide a fix, has anyone found a workflow for getting around this?
For instance is there any intermediate app (Maya/Max/Blender etc.) That could import the C4D file, re-export it as fbx with the correct phong settings?
I'm dead in the water with one particular model that has a combination of curves and geometric figures; polygons at similar angles need to be smoothed in some cases but not others. Other than re-saving the model as a dozen different models, I'm a bit stuck :)
Thanks for any ideas.
Edit:
Rejoice! :)
As of Unity 3.5 Beta in combination with C4D R13, this is now fixed
Steve
Anyone got the slightest idea how to make any progress with this one? At the moment it seems my only option is to switch to $$anonymous$$ax/$$anonymous$$aya or similar :(
I haven't been following these posts you talk about. $$anonymous$$y initial thought is, "you can't expect materials settings to transfer between these apps". Can you provide a history of why you would expect otherwise?
Hi Jessy, thanks for your comment. Phong breaks aren't really a material setting (obviously I wouldn't expect material systems to be transferable), but a universal parameter used by .fbx .dae and other export formats to indicate at what threshold-angle two adjoining polygons should be smooth shaded or not, via their normals. (They're referred to by different names, I think in $$anonymous$$ax they're 'smoothing groups', but their purpose and interpretation is the same)
History:
•Unity correctly imports them from an .fbx exported by 3ds $$anonymous$$ax
•$$anonymous$$ax and $$anonymous$$aya will correctly import this parameter from a C4D .fbx
•Unity will import the parameter from a C4D mesh exported as .dae (no use in my situation)
For something like a sword blade with an edge running down the middle, it's essential as the bend angle will be very low, say 20 degrees, yet you need it to appear as a definite crease. Naturally, setting the normals smoothing-angle in the Unity importer to this low number to preserve the crease would give a horrible faceted look to everything else that should be smoothed.
But from your answer, and the lack of any others, I guess this is a dead-end anyway with no im$$anonymous$$ent fix,so I'm re-doing the model in 3ds $$anonymous$$ax.
http://forum.unity3d.com/threads/23021-Cinema-4D-edge-breaks-lost-in-Unity-!
http://forum.unity3d.com/threads/35106-Cinema-4d-model-not-co$$anonymous$$g-into-Unity-with-normals.
Wow. :-O There's a problem here: the term reads as "Phong becomes broken" to someone who knows of the Phong model, but not this term itself. Having multiple vertices in the same place, with different normals, is useful for a lot more than Phong shading; I recommend not using that ter$$anonymous$$ology anymore. I know nothing about Cinema 4D, though, but hope that your normals get exported properly in the future.
Answer by DanjelRicci · Dec 16, 2011 at 03:10 PM
I'd love to find a definitve solution to this, but for now I use this workaround that seems to work well enough in Unity. Here's an handy 'n easy tutorial.
Let's say you have this:
...and want to do this:
These are the edges that make the break. But instead of selecting them...
...select all the adjacent polygons. Just select the ones on one side of the break.
Now right click, and select Disconnect. This dialog will appear. Leave the box ticked, then click Ok...
...and you will get this.
Now, see these vertices? They are all doubled up and must be welded again. Select Live Selection tool, uncheck Only Select Visible Elements, select them one by one and run the Weld command on them one by one. After you are done, unselect all, and you will have...
...this. Hey, looks legit.
This mesh looks exactly as it would do with edge breaks, but without using edge breaks, so it will be fully readable in Unity. Just remember to set Normals to Calculate and Smoothing Angle to 180° in the Unity FBXImporter panel.
If this won't work either, try to do one last simple thing: in C4D, after you have welded back the vertices, select again the same polygons you selected before, and move them just a bit so nobody wil notice (like 0.01, or 0.0000001), any direction will do. Import them back in Unity, and this should fix everything once for all.
Hope it helps, let me know!
Letting Unity calculate the normals seems off. Why wouldn't they import fine, if they look fine in C4D, using your method? It's unlikely that you'd need it much, but not being able to have sharp angles with smoothed normals isn't ideal. Why can't C4D just export proper normals? This can't be just a Unity issue; do people have this problem sending C4D meshes to every other app?
There is no virtual breaking. The GPU sees a greater vertex count; you can find many forum threads detailing how 3D content creation apps lie about vert count. "Phong breaks" (again, please start using a more accurate term) and UV seams do not generally add to the vert count that 3D apps report, but these things require new vertices; the apps lie to you. The "virtual"-ness, again, is merely a workflow enhancer. $$anonymous$$odeling seams is way more usable than dealing with faces that move independently, almost always. The level of "destruction" is relative; it depends on what you want to do with the faces after creating non-averaged normals.
I can't get to "FourSheds" at the moment. This problem doesn't exist with Blender, modo, or $$anonymous$$aya, in my experience, so I call it a C4D bug.
Hey, $$anonymous$$r Drayton, great bit of lateral thinking, It may not be theoretically perfect of C4D to have to do this, but for the odd occasion when you need this quick fix, it seems ideal. I asked for a workaround for something that was broken, so seems like an Answer :)
@Jessy, I see the confusion over the term now. What do you mean you "can't get to "FourSheds" " ? As I said in my OP, hoping $$anonymous$$AXON provide a fix. $$anonymous$$ax/$$anonymous$$aya et al have obviously found a way around C4D's unorthodox export data in order to read the "edge breaks" :) , that's all, I didn't imply it was Unity's responsibility to do likewise. Thumbs up.
Fantastic! But I'm going to install Unity 3.5 later, when I will be 100% done with my actual project. :)