Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
Hi, I'd like to present you a simple script. It let you automatically select all UV borders and break their Phong shading, that might be useful for game modeling, especially with hardsurface props. More info about hard edges - http://www.polycount.com/forum/showthread.php?t=107196
Unfortunately, the 'Texture View' window must be opened at least once for properly work Just close 'Texture View' and continue work.
Video: https://vimeo.com/317072443
Download link: https://github.com/rocketjump4d/UV2PhongEdges
Hello guys, I rewritten script UV2PhongEdges (weird name, I know :D) from scratch. Now it should works much faster. Also UNDO finally works, yyyeeeey!
UV2PhongEdges
You can download it here https://github.com/rocketjump4d/UV2PhongEdges
And here is an example https://vimeo.com/447775062
Also, if you just need to get edges indexes of all UV borders you can use this code:
import c4d from c4d import utils def GetUVBorders(obj): edgesIndexes = set() abcd = tuple("abcd") tuvw = obj.GetTag(c4d.Tuvw) nbr = utils.Neighbor() nbr.Init(obj) # Create empty set for `edgesVV` # In this case `edgeVV` means `Edge between Vertex0 and Vertex1 (edgeVertexVertex)` # edgeVV is just a tuple(v0, v1), where v0 is index of the first vertex # and v1 is the second one allEdgesVV = set() for i in xrange(obj.GetPointCount()): # Find neighbor vertex for this one neighborIndexes = nbr.GetPointOneRingPoints(i) for ni in neighborIndexes: edgeTuple = (i, ni) allEdgesVV.add(edgeTuple) # At this point I've got a set of all `edgesVV` of the object # Something like this: # (0, 3) # (0, 5) # (5, 1) for edgeVV in allEdgesVV: # Find neighbour polygons for this edge # I called them polyA and polyB polyAIndex, polyBIndex = nbr.GetEdgePolys(edgeVV[0], edgeVV[1]) polyA = obj.GetPolygon(polyAIndex) if polyBIndex is c4d.NOTOK: # There is no polyB. It means that this edge is border of the object # eiA stands for `Edge Index in polyA for current edgeVV` eiA = polyAIndex * 4 + polyA.FindEdge(edgeVV[0], edgeVV[1]) edgesIndexes.add(eiA) continue polyB = obj.GetPolygon(polyBIndex) # piA0 stands for `Point Index in polyA for vertex edgeVV[0]` # the same for others piA0 = polyA.Find(edgeVV[0]) piA1 = polyA.Find(edgeVV[1]) piB0 = polyB.Find(edgeVV[0]) piB1 = polyB.Find(edgeVV[1]) # Replace "d" (3) to "c" (2) if polygon is triangle if polyA.IsTriangle() and piA0 == 3: piA0 = 2 if polyA.IsTriangle() and piA1 == 3: piA1 = 2 if polyB.IsTriangle() and piB0 == 3: piB0 = 2 if polyB.IsTriangle() and piB1 == 3: piB1 = 2 # Get UV coordinates for each point in each polygon uvCoordA0 = tuvw.GetSlow(polyAIndex)[abcd[piA0]] uvCoordA1 = tuvw.GetSlow(polyAIndex)[abcd[piA1]] uvCoordB0 = tuvw.GetSlow(polyBIndex)[abcd[piB0]] uvCoordB1 = tuvw.GetSlow(polyBIndex)[abcd[piB1]] if uvCoordA0 != uvCoordB0 or uvCoordA1 != uvCoordB1: eiA = polyAIndex * 4 + polyA.FindEdge(edgeVV[0], edgeVV[1]) eiB = polyBIndex * 4 + polyB.FindEdge(edgeVV[0], edgeVV[1]) edgesIndexes.add(eiA) edgesIndexes.add(eiB) return edgesIndexes
Let me know if you find bugs. Btw, sorry any mistakes. My English is... meh
I've wrote it by myself Its presentation is here: https://plugincafe.maxon.net/topic/11336/script-harden-edges-of-all-uv-borders-break-phong-shading May be it'll be useful for someone Cheers
Got it. Thank you.
Hello guys! There is a plugin for Cinema R23: Vertex Normal Tool You could find it here https://frostsoft.blogspot.com/p/fssoftware.html. And it doesn't work correctly with any version of Cinema newer than R23. Unfortunately, an author doesn't respond to my emails. It seems like he doesn't support his products anymore.
Vertex Normal Tool
Is it possible to make this plugin run with modern versions of Cinema? It seems like it should work. I found this here https://developers.maxon.net/?p=3815
Plug-ins that were built for R23 should work with S24. They require to be rebuild against the R24 API in only a few cases. See C++ documentation for more informations.
Maybe there is any way to rebuild this plugin? I forgot to say, the plugin is encrypted (.pypv), so I cannot edit it.
P.S. Is there any alternative of this plugin?
Hi there, I have a similar problem. But I use R25 version.
If I write exporterID[c4d.FBXEXPORT_SDS] = True or exporterID[c4d.FBXEXPORT_SDS] = False I get error AttributeError: parameter set failed
exporterID[c4d.FBXEXPORT_SDS] = True
exporterID[c4d.FBXEXPORT_SDS] = False
AttributeError: parameter set failed
If I comment or remove this line, export works fine.
Maybe I should create a new topic with this issue.
Hello there
There is my main module A. It should use a module B (located in the same folder) and Python's standart module YAML (which doesn't exist by default). Whats the best solution? Should I just download YAML and copy it to module A folder?
module A
module B
YAML
Right now module A is placed here
%user%\AppData\Roaming\Maxon\Maxon Cinema 4D R25\library\scripts\
I'm not sure, but maybe I should use another folder, e.g. E:\C4D_scripts and use environment variable C4DPYTHONPATH39?
E:\C4D_scripts
C4DPYTHONPATH39
How do you orginize your files and modules?
Hello guys, where I can report a bug?
There are Bug Reports but it looks dead.
@fritz thank you very much, it works!
Roger that, thanks again. I wasn't sure that the developers were aware. Sorry for annoy you Cheers
Hello guys, This bug is still exists in S24. I made a video to show how it worked before (R21) and now (S22, R23, S24).
https://vimeo.com/558586168
For test I used the script from this page. The only difference I made is decreased value from 1000.0 to 0. It's just for convenience.
value
1000.0
0
This script should mirrors selected object, when settings[c4d.MDATA_MIRROR_DUPLICATE] is False. It works in R21 and doesn't work in any late releases. Could you fix it? I'm still using R21 because of this bug
settings[c4d.MDATA_MIRROR_DUPLICATE]
False
@m_magalhaes Got it, thanks
Hi, I've just tested this script in R23. It doesn't work One of my own scripts cannot work without this function. Guys, you're really awesome! I love C4D, and hope you can fix it
May be I can help somehow? I can upload the example scene, if you need it.