I’ve been thinking about a custom manipulator possibly, to show UV Seams/Shell Borders on the model/over the model, without a UVW Unwrap Modifier.
I’m not sure this is possible, but the xView viewport tool has similar things. Showing Open Edges.
it’s easy to do with scripted xView. a scripted manipulator will be too ‘heavy’… slow and memory expensive.
do you have any idea about its cool using? the thing has to be generally useful i guess…
Yeah a couple things off the top of my head. Building things like roads where you have different profiles along the ditches or maybe the road widens ect. Probably also be useful for building terrain from maybe autocad splines. Also for a way of stitching geometry together.
Say you have some usgs terrain and you want to model a road through it. You could cut out the section from the usgs model build your road and then sweep a profile with one edge being the road and the other edge being the cutout edge of the terrain if this make sense.
Thanks for that tip Dennis.
I got it working as a Custom XView Type. But now I need to make it faster. There’s a 1/2 second delay or something when processing/finding UV Island Borders.
how many faces in the object? how do you search for open map edges? i have ~30ms for 10,000 faces mesh
I am going off an Example on how to Split a Mesh by UV Elements. It’s using the
meshop.getMapVertsUsingMapFace
meshop.getMapFacesUsingMapVert
I did a test, my code runs on an EditableMesh in 0.1 seconds, vs 0.4 or higher on EditablePoly.
But I need to run this on an EditablePoly.
This is just on a simple Teapot.
Here’s the main part of the code. Getting the Island Faces.
with undo off
(
local node = selection[1]
local nodeMesh = node.mesh
local islandArray = #()
local faces = (nodeMesh.faces as BitArray)
local app = append
local find = findItem
local getMapVertsFromFaces = meshop.getMapVertsUsingMapFace
local getMapFacesFromVerts = meshop.getMapFacesUsingMapVert
start = timeStamp()
while ((faces as array).count > 0) do
(
local cnt = 0
local face_array = #((faces as array)[1])
--repeat until the counter is higher than the faces stored in the array
while cnt < face_array.count do
(
cnt += 1 --increase the counter
--get all map vertices used by the current map face in the collection array:
theVerts = getMapVertsFromFaces nodeMesh 1 #(face_array[cnt])
--get all map faces used by these map vertices -
--this gives us all neighbours of the current map face
theFaces = getMapFacesFromVerts nodeMesh 1 theVerts
--make sure only unique faces are written to the array
for f in theFaces where find face_array f == 0 do app face_array f
--appendIfUnique face_array f
)--end while cnt
app islandArray face_array
local tempFaces = face_array as BitArray
faces -= tempFaces
)
end = timeStamp()
format "Processing took % seconds
" ((end - start) / 1000.0)
)
In bigger idea, I think we need to split 3dsmax to some subsoftwares:
-
Animation
-
VFX
-
Visualization
-
2D Animations (Cutout)
-
…
And make separate version of 3dsmax for each of them. Ihave been already done this for cutout animations (3dCutout).we can dothis by removing unused tools, updating existing tools and make new tools.
3dsmax is composed of many usable and unusable tools, weneed to remove them first! who makes animations by CAT? they really makes theiranimations just by walk cycle? we need to know what really users want.
to show my code will be too easy
i will give some tips first…
meshop.getMapVertsUsingMapFace and meshop.getMapFacesUsingMapVertare are slow methods… both go through all faces/verts… use getmapface, it processes only one face.
it’s #1
actually i was asking about the ‘split’ sample… i’ve found it in the mxs. well… what can i say? not fastest method is shown
Hm. I’m not sure I can figure it out that way. But, it seems like using that method, I’d get the face map verts, then compare the verts between faces to see if they share some, if they do, then group those together in an array?
The idea of creating a visual maxscript dialog creator with support of dotnet controls is a very cool idea.
I think forum user TheGrak once started this project. Personally I don’t see MAXScript as a whole as a language that would lend itself well to a node based UI. It’s too much of a mess.