Max 2017 - User Interface is less useful

Max 2017 - User Interface is less useful

Anonymous
1,216 Views
14 Replies
Message 1 of 15

Max 2017 - User Interface is less useful

Anonymous
Not applicable

MAIN QUESTION:  If you have an object being influenced by scripts in other objects in the scene, how can trace backward to find the source of that influence?  For instance if a text object is reporting the speed of a car model and the script that updates the text object is in a Float Script controller on the z-position channel of a helper object, how do you find the location of the script to make edits to it? (Assuming you don't already know which helper and which channel to search for?)  I have a file with over 100 helpers, which means over 700 possible channels to search one at a time.

 

My main question is more specific than the Subject implies, but is a symptom of a larger problem - namely, the less informative (and thus less useful) User Interface of 3DS Max 2017.  Autodesk has made major changes to the UI in ways that I haven't heard anyone complain about, and they haven't even touched some of UI shortfalls I've seen consistently since they bought it back in version 8.

 

Please pardon the gripiness of this post.  It's the 3rd time I've had to write it because the Forum form still needs work.  (deletes text in the <body> if you change other fields)

 

DETAILS:

So now that AutoDesk has changed the UI to something that more closely resembles a cheap iPhone knock off, how would you suggest I trace control structures?    In the past, I could quickly check the Assign Controller rollout in the Motion panel and look for the script icon on any of the Transform channels. Also, if a channel had a script on it, it would be bold.  Now that Autodesk has done away with the icons in that list and the channel name is no longer bold when a script is in place, I have to right-click on every single channel for every single possible object until I find it.  I mean, really?  Whose dumb idea was it to replace the icons with red green and blue?  That's redundant information since even a first year Full Sail drop out would relate X, Y and Z axes with R, G and B.  

 

And please don't waste my time or yours by suggesting that I look for the "Float Script" text, since even on a 24" Cintiq it still only says

"Z Position: Float S".  

I'm looking for a QUICK way of doing this, and scrolling/right-clicking successive objects on a narrowly displayed list hunting for a script is not "quick".

 

I'm often given models in different formats (Maya, 3DS Max, CATIA, Motionbuilder, etc) and I have to figure out how the assembly is rigged so that I can make modifications to incorporate it into our system.  The files are rarely documented and often somewhat old, so the original designer might not be available.  In Maya and CATIA it's easy to figure out because you can directly trace the influence source backward from the target object.  In 3DS Max it has always been a challenge because you are blind from seeing the control source from the target object receiving the influence.  Now they've made it even harder by replacing the icons in the Assign Controller list with Red Green and Blue pips. Or perhaps there is some undocumented way of making a MaxScript call or some other obscure function in the menus that I haven't heard of (and apparently tech support at Autodesk hadn't either in 2011).

 

I've been a 3DS Max user since the Kinetix days, and if Autodesk wanted to update the Max UI, I'd be all for it.  There are so many annoying UI limitations that don't seem necessary anymore since we can actually have keywords, object names and filenames larger than 8 characters.  In this case I think Autodesk should have left the icons in the Assign Controller list, and spent that time reprogramming dialog boxes so that they can be expanded and a user can actually see all of the text in the list.  

 

Thanks for you patience as I gripe.  Please respond with a solution.

Kyle

Ride Programmer - Universal Studios

0 Likes
Accepted solutions (1)
1,217 Views
14 Replies
Replies (14)
Message 2 of 15

Swordslayer
Advisor
Advisor


First, I'd like to clear up some misconceptions, the bold text is still there and it still marks an instanced controller (not a script controller). What changed (apart from the icons) is that there's now a context menu just like in trackview which makes it much easier to copy-paste controllers.

 

Now for your question and managing dependencies - you can find some tools that do that, too lazy to search so instead a short primer on working with this stuff as a series of oneliners.

 

If you want to find a float script controller(s) used by the currently selected object:

 

ctrls = getClassInstances Float_script target:$

 

If you want to get all float script controllers:

ctrls = getClassInstances Float_script

If you have a controller and want to find out what node(s) it drives:

 

 

refs.dependentNodes ctrls[1]

If you want to find out on what it depends:

 

refs.dependsOn ctrls[1]

Most of the time (well, in case of well made script controllers), it won't return a node but rather a NodeTransformMonitor (weak reference). In that case, use its .node property to get the node.

 

An example script to select any object driving the currently selected object via float script controller would be:

 

 

for ctrl in getClassInstances Float_script target:$ do 
	for obj in refs.dependsOn ctrl do 
		if isKindOf obj NodeTransformMonitor then selectMore obj.node
		else if isKindOf obj Node then selectMore obj
		else if isController obj then selectMore (refs.dependentNodes obj)

 


@Anonymous wrote:

Autodesk has made major changes to the UI in ways that I haven't heard anyone complain about, and they haven't even touched some of UI shortfalls I've seen consistently since they bought it back in version 8.

Of all the 3d products, 3ds max is one of the few that originated as Autodesk products (in 1988 IIRC). Kinetix was Autodesk Multimedia Division, not another company. And the UI changes are a part of an effort to modernise the max UI, make it HDPI aware and possibly allow greater customization in the future, just a start but it's much more than meets the eye. You can make a list of the shortfalls in a new thread or on uservoice.

Message 3 of 15

Alfred.DeFlaminis
Alumni
Alumni

Hello @Anonymous,

 

Thank you for posting your thoughts and frustrations about the software.  I think you have some good points in here (even with the gripiness) and I don't think you are off base on some of these issues.  As Max evolves there are some stepping stones that need to be addressed and it does look like things are headed in the right direction lately.

 

I realize you don't like the UI, but keep in mind that the entire thing was ported to QT recently and so that opens up a lot of doors and gets the UI experience modernized so that it can be built upon.  I'm not saying those changes you're asking for are currently slated or not, but you seem to have the experience and passion need to communicate those here and that's a good sign in my opinion.  

 

I lack the scripting knowledge needed to answer your question in the way that @Swordslayer has here, so kudos given.  There are some areas where you can post this and get it seen by people higher on the chain them I am, and I think it would be a good idea to do so.  You can use the Feature Request board which has some subboards that you may be interested in or post on the ADN forums.  In the meanwhile I have sent this post to the KDE (Knowledge Domain Expert) for 3ds Max and he is now aware of these issues.  Thank you again for taking the time to voice them, and you have been heard loud and clear.  I appreciate your passion to the software, despite the frustration you clearly feel it's obvious that you are a lover of 3ds Max and just want to see it be all that it can be very similar to myself.  


Does @Swordslayer's post answer how to locate those objects/controllers in a way that works for you?  The programming forum may have more solutions as well for scripting and programming based questions.  

 

Best Regards,

0 Likes
Message 4 of 15

Holosim
Participant
Participant

I guess he's talking about the Yost Group, Swordslayer.  Back in those days, Autodesk was less a developer and more a publisher.  Kind of like Disney was for Pixar.  But rather than turn this into a "History of Autodesk" discussion (this thread started off in different directions anyway) I'd like to follow up with your solution.  

I just posted a question with the same situation.  I've set up a scene with 2 boxes (Box001 and Box002).  I keyframed Box001 to translate along all 3 axes, and assigned float script controllers to the 3 position axes of Box002 to swizzle the movement.  Everything functions as expected.  So I select Box002, copy and paste your code into a new ms file in the editor window and press CTL-E.  Nothing happens.  I would have expected Box001 to be added to the selection, but Box002 is still the only object selected.  Did I miss something?

 

Thanks for replying to the message above.  

0 Likes
Message 5 of 15

Holosim
Participant
Participant

Here's a question for you Alfred.  I just posted a similar question (I wonder if I work with this guy), and posted it to the FORUM as well.  That's how I found this question.  A better place for it WOULD be the MaxScript forum, I just didn't see it on the dropdown in the form when I filled it out. 

 

Is there a way to move a question from one board to another?  I'm looking in the View All/Manage section of my dashboard, but I don't see anything that lets me move a post.

 

Thanks!

0 Likes
Message 6 of 15

Swordslayer
Advisor
Advisor
Well, Yost Group involement ended well before the mentioned max 8 (and I'd argue that max 9 was the best version ever, extremely stable, numerous maxscript improvements, .NET, first x64 version, chamfer as we know it now and so on). As for the float script, what are the contents of the script (copy-paste them here if possible)? Does it use node tracks, weak references or direct node reference?
0 Likes
Message 7 of 15

Holosim
Participant
Participant

Agreed.  I think I've spent more time in version 9 than any other version.  Back then I worked with two companies (a studio and a university) both of which skipped 2009 and went straight to 2010. There was so much anger over the black color-less button icons that both organizations rolled back to version 9.

 

Anyhow,  the script I'm using is nothing fancy. I assign a float script controller on the Z Position channel of a helper.  It takes the change in position of a model (Truck_001) that is constrained to a path (pathTruck) and calculates the speed along the path.  Then it updates a text object (Text_TruckSpeed) to report it in the scene.

 

pathLength = curvelength $pathTruck
posBefore = at time (currentTime-1) $Truck_001.pos.controller.percent/100.0 * pathLength
posAfter = at time (currentTime+1) $Truck_001.pos.controller.percent/100.0 * pathLength
velocity = 0.5*(posAfter-posBefore)*(framerate as float)
$Text_TruckSpeed.text = formattedPrint (velocity/12.) format:"0.1f"

 

 

What I'd like to be able to do is select the text object (Text_TruckSpeed) and find out what helper has the float script controller assigned to it.  Everything I've worked with so far has only one helper controlling each text object, but as I look through your code you raise a good point.  It would be even better to have a method to select multiple objects if there are multiple influence sources.

0 Likes
Message 8 of 15

Swordslayer
Advisor
Advisor
Accepted solution

Hmm, kinda expected something like that - that's not how it's supposed to work and would break the second you rename some of the objects. Also, as it cannot tell what objects it depends on, it won't update when you change those objects (although it will update on frame change). Plus it's just a text that's evaluated, there's no info that you'd get the dependent objects from.

 

GUID-8124595A-658E-4C4C-9498-5C8916FD8463-low 

 

The proper way of doing this is assigning the tracks like $Truck_001.pos.controller.percent as a track (in the Create Variable section, make a new name for a variable (root pictured), create it, select it in the variable list and assign it via the Assign Track button), $Text_TruckSpeed should be a node (so the Assign Node button).

 

When you update the script, running the script to select nodes that influence it using float script controllers will work (and objects can be renamed etc. without breaking the script).

0 Likes
Message 9 of 15

Holosim
Participant
Participant

ARG!  Hacked by my own team-members. (I knew I must have worked with this guy).  After I lay a beaten on someone and get my password back, I'll make sure he posts this as a solution to this thread.  Thanks for the input Swordslayer.  Since I've already posted another similar question in the Programming board, I'd like to test your method and repost your solution to that thread.  Or you can if you want.

 

https://forums.autodesk.com/t5/3ds-max-programming/how-to-trace-scripted-influence-source-from-the-t...

 

 

Thanks,

The real Kyle

0 Likes
Message 10 of 15

Alfred.DeFlaminis
Alumni
Alumni

Hello @Holosim,

 

I can move a post for you, no problem.  I'm late to this party, been catching up on other threads.  Which post # would you like me to move?  I'm happy to do so.  Was it from this thread or a different thread?  The programming forum is where the Maxscript questions can go to, but sometimes it is good to use the main forum.  No big deal either way, just let me know which thread/post # and I'll take care of it for you.  Your post will say "Edited" because I'll need to change the title of the thread since moving a post keeps the old thread name, just a FYI.  

 

Best Regards,

0 Likes
Message 11 of 15

Holosim
Participant
Participant

Thanks Alfred,

 

  My question was posted in the Autodesk Forum board here:

 

https://forums.autodesk.com/t5/3ds-max-forum/how-to-trace-scripted-influence-source-from-the-target-...

 

I've actually made a duplicate request in the correct board (Programming)  here:

 

https://forums.autodesk.com/t5/3ds-max-programming/how-to-trace-scripted-influence-source-from-the-t...

 

So if you could delete the former, I will point to Swordslayer's response to the latter.  Or just let me know how I can delete a question.  (I couldn't find a delete nor move button).

0 Likes
Message 12 of 15

Alfred.DeFlaminis
Alumni
Alumni

Hello @Holosim,

 

Yeah there's no delete button for me either, but the moderators can do that.  I'll go ahead and take care of this for you.  Thanks!

 

Best Regards,

0 Likes
Message 13 of 15

istan
Advisor
Advisor

@Anonymous wrote:
and I'd argue that max 9 was the best version ever, extremely stable, numerous maxscript improvements, ..

..and c++ sdk development is at least twice as fast as with max2017 and VS does not crash that often with edit & continue !!

0 Likes
Message 14 of 15

Holosim
Participant
Participant
Yeesh. Haven't worked with the SDK since version 2010, but I'll be getting pretty heavy with it next year. Do you have experience with 2015 or 2016? How does it compare with 2017 on speed and stability? If it is that unstable, I may want to stick with one of those older versions. At least for programming. -TNX
0 Likes
Message 15 of 15

istan
Advisor
Advisor

Today I mostly use max2012 for plugin development (x32). Although I always have to cross-check against the newer SDKs (Unicode..), I am faster. x64 debugging makes only sense with Max2017.

0 Likes