Would it be possible to connect to the separate RGB channels or XYZ vector channels directly on the node without a separate controller? Something like how it works in Maya.
Example shows: Facing ratio (float output) to Color (Red channel).
Pixero,
I’m not the guy making SME (obviously), but I think I can answer that question. Unless that is something you can do in 3ds max without the SME, I’m pretty sure that SME won’t be able to add that feature for you. SME is mainly a workflow/interface feature, enabling you to do something 3ds max already does, but in a different, sometimes easier way. With that being said, a color value in 3ds max can have a XYZ controller attached to it, so there should be no technical issues in doing what you request
MrElmo,
I’d say this is pretty production ready already, although I find it slightly slower to work with than the standard material editor. The main issue for me is that you have to right click-edit each node in order to reach its attributes. As long as you keep the material editor side by side with SME it’s pretty smooth. I hope there will be something that quickly lets you get a node inside the matedit. I suggested double-clicking in an earlier post, but it could even be done like in Maya, by having the currently selected node automatically appear in a matedit slot. Still it’s great stuff, really smooth to use, and it’s so great finally having this inside 3ds max!
Cheers,
Rune
Pixero, SME uses Bezier_Color controllers by default and Bezier_RGBA if A&D material already has one assigned and you cannot assign sub controllers to these two types. Only XYZ controllers use sub controllers to form the point3 value.
Now let me explain you how max works with colors. By default material has color value, which is not a controller but a simple color value. You cannot control this color in anyway, its one fixed color, it cannot be animated and it cannot be linked, these values are always unique and cannot be instanced.
Now if you wish to animate the color, you have to assign a color controller to it. It can be any point3 value (point4 with A&D). By default (if you use auto key etc) max assigns bezier_color controller to animate your color. This is the reason why I also chose bezier_color to control color values with SME. Because in SME colors can be wired around which means creating instances of the same color to different material we need to use controllers to do this. In short controllers can be instanced and animated, color values cannot.
So by default max uses only bezier_color controllers for colors and you cannot assign sub controllers to different channels of these. So you do need a seperate controller to do this. I’ll probably use Point3_XYZ and Point4_XYZW to create these. Basicly these two controllers have 3 or 4 Bezier_Float controllers assigned to their channels by default.
SuperRune, you can already do that with SME. On the top toolbar first select the medit slot you wish to use (0 means currently selected slot, 1-24 are the corresponding medit slots) and press “Auto assign to Material Edit” button right next to the medit slot field.
I’ll probably also add an option to override the slot setting if selected node is already present in Material Editor so it sets focus on it instead.
Oh, I didn’t know that, excellent!! Then this is good enough to use in production I’d say. And the double-click wish I had is unnecessary as well! Maybe some auto-update button could be handy, if you’re not thinking about that already? Also, is is possible to have a slight delay in the Matedit update, so that if you are just moving nodes, it won’t refresh the Matedit allt the time? Just a thought, don’t know how that would work in practice.
Cheers, Rune
Ok, thanks for the explanation. I guess its just the different way Max works compared to Maya where almost anything is wirable/animatable.
So far its looking good. But I’ll probably nag you with more feature requests in the future…
Hi,
You could use color_RGB() controller, it gives you seperate R,G,B tracks for your color just like position_XYZ() does for position controllers.
cheers,
o
Unfortunately its not coming because there is no way of telling when you change anything in material editor. The only way of seeing when material/map parameters change would be using “when parameters” construct and this triggers about 4 times everything you click something with your mouse inside 3dsmax for every material/map so its unusable.
If anybody has ideas how to monitor material/map changes then I’d love to implement it to SME.
Hi MasterBercon, i really like your sme, i have been wanting to make one for some time but didn’t had time, but after you post your script i grabed some courage and made a few modifications that are not ready for general use but take some ideas from shaderfx ui.
The basic modifcation is integration of material ui in the sme. Here are a few grabs i made.
This is a generic node that works with any map or material, but then we can write a better ui for any node like the next one.
Also there is a editor and better node creation for custom scripts like adding ins and out sockets.
Has soon has i have some time to clean the script a will send to MasterBeacon since he is the father of script.
Best regards,
Daniel Santana
4+Arquitectos, Lda
Firstly thx for all the feedback!
Pixero, Max does indeed work in a different way but I think the end result is very similar. Max just handles this stuff through controllers so every value you can add controller to is linkable and animatable because you can animate or instance (link, wire, whatever) the controller around. I think this is works very well.
dgsantana, looks pretty good. I also considered how to get all those options to SME in a sensible way, I went so far as to look into max SDK to see if it’d be possible that way. Unfortunately Maxs Material Editor is so closed system I dont think its possible to get original material/map UI’s to SME. The only way around this is to make new UI as you’ve done.
However this means a lot of work and to get good looking UI you need to do it seperately for each material and map. This is why I chose to make as tight integration with original material editor as possible. Unfortunately this aint possible either without small quirks. As mentioned, its not possible to detect material and map changes done in material editor so updating material and map previews has to be done manually. With custom UIs integrated to SME like you’ve done this problem doesn’t exist. Another problem with interagtion to medit is lack of drag’n’drop support. We’ll see if kees can do and finds time to do something about this.
About adding better support for custom nodes its indeed in my to-do list and I’d be very intrested to see how you’ve handled it. The main problem I can think of is the way SME handles controllers. They are all stored to rootNode.controllers array (custom atribute to rootNode) so I can use weak referencing with math nodes which are script controllers. I need to use weak referencing for two reasons.
1. If I use direct reference in script controller to other controller (Float inputs math nodes take) this other node must be assigned somewhere in the scene, otherwise it results in error. Okey, lets store all our controllers to rootNode (global node which every max scene has). Works fine until we again try to make direct refence. 2. Since both controllers are stored to same atribute of rootNode max incorrectly detects this as dependancy loop and prohibits me making direct reference from script controller to the other controller. So instead I use weak reference.
I’d be delighted if I somehow could store all the controllers other way and use direct refencing, anybody has ideas how to accomplish this? Some ideas on this would be appriciated as it greatly effects on how I handle the improved support for all controllers.
And here is some status update on SME:
I’ve now completely redone controller dialog which is now integrated as part of SME window. (Its of course hidden by default and not a static part of the view)
Here is my to-do list, these are more like notes to myself than anything official. Bolded stuff is what I’m working at the moment.
-
Shift+Drag to copy node
-
Support selection of multiple nodes (atm you can only select one)
-
Store SME with max scene (could this be as simple as storing smeOps to custom atribute of rootNode like with controllers?)
-
Different SME views (dropdown menu to select etc.)
-
When doing something to node take account the possibitily of changed material/maps
-
Proper installer (executable)
-
Freeze/Unfreeze nodes
-
Look into remaking material on disconnecting controller from it
– Improved controller support
– Float to Color node, perhaps Color.channel to float too (Color_RGB and Color_RGBA controller support)
– Consider possibility of making custom nodes with some sort of editor
– Perhaps full support for all controllers, meaning you could change their values inside SME?
– Possibility to open curve editor from SME and edit controllers this way
[b]- Names for math nodes (simple numbering like math node #1, #2 etc)
- Backwiring with original value (add this to backwiring menu)
[/b]As you can see its a pretty long list so there is still much to do, much more than I expected when I began writing SME last summer or even when I released the second public version. Don’t expect any new release soon since I have to do some radical changes on how SME works with different type of controllers. However don’t be afraid to do more feature requests, my goal is to make a production ready tool which actually makes making complex materials easier and not harder or even more complex .
For those who’ve been asking about whether SME could be used in production or not, I’ll say yes it can be used in production. SME shouldn’t be able to crash max or corrupt your scene. The only mark it leaves to max scene is a custom atribute to rootNode where it stores all controllers used in SME. You don’t need SME or Helium to open scene where SME is has been used, its completely compatable with Max without any plugins or scripts installed.
If you ran into problems with SME please report it here and I’ll try to work some hotfix for it.
Hi there,
first of all, great start and very nice job so far! Considering the UI, shouldnt it be possible to read all properties of a map/material in the scene and it’s type and autocreate an UI ?
Regards,
Thorsten
The first image i posted shows just that, a autogenerated ui, but them you can create a “better” ui if you feel like.
Best regards,
Daniel Santana
Like dgsantana said and did show in his first screenshot it is possible. The problem is that you’ll get a long unorganized list of parameters. In order to organize them in a sensible manner you need to code UI specifically for each material and map.
What your doing looks very interesting and i’d love to help out … just as soon as i get it working…
I placed the contents of the latest ‘SME_Beta_0_1_3b.rar ’ file in C:\3dsMax9\scripts\SME
and the .mcr in C:\3dsMax9\ui\macroscripts\
when I try and run the script i get the following error
– Error occurred during fileIn in <File:C:\3dsMax9\scripts\SME\smeDialog.ms>
– Error occurred during fileIn in <File:C:\3dsMax9\scripts\SME\smeInit.ms>
– Error occurred in execute(); filename: C:\3dsMax9\scripts\SME\smeDialog.ms; position: 3221
– Frame:
– called in anonymous codeblock
– Frame:
>> MAXScript MacroScript Error Exception: – Syntax error: at SchematicControl, expected <rollout control>
– In line: on b <<
What am i doing wrong ?
thanks