I started learning sketchup a few days ago and was eager to try some renders via the maxwell plugin. I ran into trouble when it came to assigning materials, and needed a way to diagnose some of the problems I was having. I spent the last two nights learning ruby and going over the sketchup api in hopes of better understanding what was going on behind the scenes. When I saw how straightforward everything looked I decided to hack together a plugin of my own. I've only been using it for a couple of hours, but so far I'm finding it extremely helpful at finding & eliminating problems in the maxwell material assignment process.
So what does it do? Well, when you use the maxwell plugin to assign materials, you're simply attaching extra attributes onto the sketchup materials in your sketchup file. My plugin simply reads those attributes and presents them in a useful manner. It generates a table listing all of the sketchup materials and their associated maxwell attributes. You can select the individual sketchup materials, and if the maxwell material panel is enabled it will pop up as it normally would. My plugin also allows you to specify an auto MXM directory, which it can use to ensure that your sketchup material names match up with mxm filenames within that directory structure.
Anyways, I wanted to make it available in case anyone was interested. There will most likely be compatibility problems and bugs I haven't run into yet, but I will try to fix any issues I encounter or those that are brought to my attention. Just keep in mind that this isn't a professional app, and is something I hacked together in a couple of hours.
1. Don't switch between sketchup files while the MXM Reporter is open, as it gets bound to the active model whenever it is started. Simply close & reopen MXM Reporter if you ever switch between sketchup files. (The maxwell plugin has the same issue, only trickier since you have to toggle the "enable maxwell material panel" button to rebind it.)
2. MXM Reporter will automatically update when you add or remove sketchup materials. However, renaming sketchup materials or altering the maxwell attributes will NOT automatically update the MXM Reporter window. That is what the big "Refresh" button is for. I had an implementation that worked around these two issues, but in the end I decided to take it out for maintenance reasons (the plugin is simpler without it).
3. In order to use the auto MXM feature, you must type in the appropriate search directory and press "scan". This will recursively scan all files and subfolders within the specified directory, building a list of possible mxm files to match your sketchup material names against. If you add, remove or rename any mxm files within the search directory, you can simply "rescan" it to rebuild this list. The scanning process will also alert you to any name clashes you may have within the directory hierarchy.
1. I am using the latest version of Sketchup Pro 7 and the maxwell skp2mxs plugin (v2.2) on a Windows Vista system with IE8. Users on others systems (particularly osx) with different browsers may run into problems. I have a feeling (looking through the skp2mxs ruby file) that some of the maxwell attributes that get attached to the sketchup materials have changed over time. Attributes which can't be set with the latest maxwell plugin should be safely ignored by MXM Reporter.
2. If you are using windows, MXM Reporter will try to retrieve the auto MXM directory from the maxwell exporter options (which are located in C:\Windows\MaxwellRender.ini). I have no idea where these settings are kept on OSX, but if anyone cares to find out I will update the plugin to look there as well.
2009-6-15: Updated to version 0.3 (Changes)
2009-6-16: Updated to version 0.4 (Changes)
[Currently trying to fix compatibility issues for osx users. See recent posts if you can help!]
Please, register (free) to access all the attachments on the forums.
Last edited by vodkamartini on Wed Jun 24, 2009 5:06 pm, edited 7 times in total.
Wow, welcome to the forum and thanks for contributing! I'm not a Maxwell user, but I'm sure the people who are will find this quite useful. Do have a screenshot by chance of what the script looks like in action?
I will test it out. But many thanks for your effort.
And welcome to the forum here!
Thank you very much for this plugin! I think it will be very useful. It seams to be working well!
Just a note with regard to Auto MXM material assignments:
There is a small bug in the maxwell exporter (this plugin is fine!) that if you have a material which includes '<' or '>' in it's name the autoMXM calls for mxm's that aren't necessarily with the exact same name.
skp material '<black>' may call an MXM called 'blackberry' instead of not calling any material.
The bug has been reported to next limit, and should be fixed in next versions.
Hang on wait a minute!!!
What your saying is:
1. You have just started using SU,
2. Just started to learn ruby,
3. This is your first post to these forums!
What is going on here! Are you god?
I've been asking for this type of dialogue for the last 4 years and you give it to us in two days of learning ruby! You are god hey, come on own up to it, we'll work it out at some time surely so you might as well be honest now!!!
Well done mate and a huge thank you, thank you, thank you!!!
I'd love to see the option for the material to be linked straight from the list per material, I know this is asking for more than I could ever have expected from anyone to grant when you are not directly aligned with the plugin development!
Thanks for all the feedback so far. You're embarrassing me, though - the gods are the other people in this forum flexing their linear algebra muscles. I'm just some dope who generates an html table, lol. Learning new languages is pretty straightforward since I'm a CS grad and have worked with dozens already. It's just like moving between 3d modeling packages - once you understand the concepts (nurbs, polygons, subds, etc) it simply becomes a matter of learning the interface (or in this case, the syntax).
Richard, could you expand a little more on the functionality you would like to see? I want to make sure I understand what you're looking for. Do you...
1. Want mxm files that are assigned to sketchup materials (the green & purple entries) to be "hyperlinks" to open them in the maxwell material editor (mxed) so you can immediately edit them?
2. Want all the maxwell material attributes for the exporter to be editable within MXM Reporter (completely sidestepping the maxwell material panel)
3. Want a dropdown list filled with all of the scanned auto mxm filenames to appear alongside each sketchup material name, so that you can quickly choose to rename your sketchup material to one that matches an auto mxm filename.
All of those are technically possible. If I had to guess right now I would think you were asking for the first option. I can try to add that in tomorrow morning during my flight home. The second option would be stepping on nextlimit's toes a bit, but I doubt they would mind. Both the second and third options would clutter up the table a bit, so that's something to consider.
Anyways, I'm still worried about bugs and compatibility issues. I was hesitant to even release it publicly since I'm not a seasoned sketchup user and can't even test it out on OSX. But yeah, I'll keep monitoring the thread, so please let me know if there are any problems!
I have an old Mac Mini at home I use for testing purposes. Does this plugin require Maxweel to be installed? Or can it be tested by any machine as long as the model is set up for maxwell? (If the only thing it uses is the attributes.)
Thomas Thomassen — SketchUp Monkey & Coding addict
List of my plugins and link to the CookieWare fund
Alrighty, I managed to work on it a bit during my trip home.
MXM Reporter - Version 0.3
1. Clicking on mxm filenames will now open them for editing inside the Maxwell Material Editor (mxed). On windows platforms, the mxed process will not block the main sketchup process. This enables you to open multiple mxed windows and edit materials while you continue to work within sketchup (great for multi-monitor setups). Since I don't have OSX to test with, I wasn't confident enough to implement the same functionality over there. OSX users should experience the same blocking behavior as if you had clicked the edit button from the maxwell material panel.
2. Clicking on "unassigned" maxwell material entries will pop up the familiar "open file" dialog window. Combined with the previous enhancement, the material assignment workflow is now considerably streamlined. You no longer need to use the maxwell material panel to assign and edit mxm files.
3. Two buttons were added to the bottom of the MXM Reporter window. "Clear Selected" will remove all maxwell material attributes from the currently selected sketchup material. "Clear All" will remove them from ALL sketchup materials. This solves several annoyances I was having (not being able to use auto mxm once attributes were assigned, maxwell's material panel automatically adding attributes to newly created materials, etc). Please note that these buttons will NOT remove any other maxwell attributes that are applied elsewhere in your model (ie. the camera, environment, hdri, object attributes).
1. Forgot to escape html characters when displaying auto mxm filenames.
2. When default material was manually selected, material observer was passsing nil, causing an exception.
3. File separators were inconsistent between mxm and auto mxm filenames.
thomthom, thanks for the offer to test - It probably isn't worth the trouble, though. You're right about it working without the maxwell plugin, but testing in that way wouldn't cover the majority of use cases. I'm sure some osx maxwell user will eventually chime in if there are issues to resolve.
Thanks for all the feedback. As always, let me know if there are any problems.
I've got to get in and test and see what your workflow is to know now if you have hit my request on the head, though in short what I was suggesting is that all linking or re-linking could be done from the Reporter!
Meaning the full material SU (in model) material list is shown and clicking in the corresponding maxwell material opens the link dialogue (I think you have done this now!).
BTW the clear material button is a real blessing, I could never find anyway to unlink materials to just use a standard colour. Since V7 Even if you created a new material a link would be produced as a new material is created from the one currently selected.
I think you have covered pretty much all bases now and eased a great deal of workflow toward leaving all material assignment till just prior to export where one can have a greater level of assurance all is linked!
Seriously mate this is a very appreciated effort this end! If your ever in Australia - trust the beers are on me!!!
Ok I just installed and checked!
The functionality to double click the linked material for opening the editior is great, but again what I'm hinting at it to allow the current SU/MXM to be relinked to another material - and best I guess if it could go to the same folder as the current link. Mind you the current MR plugin lacks this functionality to take you to the same folder and you have to painstakingly navigate!
So say I have a SU material called "Garage Brick" and it is currently linked to an MXM "Brick Dark Brown Reflective", I can click (maybe in a third column "relink") relink - the browser opens in my Face Brick Folder (where the "Brick Dark Brown Reflective" material is hosted) and I can select an alternative material!
Also would be really cool if a link could be dragged from one material to another. I tried copy paste but that doesn't work!
Just been playing and this is very cool!
I see what you mean now, Richard. I've tried to tailor it some more to your liking...
MXM Reporter - Version 0.4
1. The "Choose MXM" file browser will now open up to the folder of the last successfully assigned mxm file. If this is the first mxm assignment you are making, it will try to open up whatever folder is currently entered in the "auto MXM path" input box. If that fails too, it will simply open up whatever default folder sketchup decides on.
2. Added a context menu that pops up when clicking the right mouse button over entries in the maxwell column. This allows you to reassign new mxm files to sketchup materials that already have an mxm assigned (previously you would have had to "clear selected" first). The context menu will also allow you to quickly copy & paste mxm assignments between materials.
Bug Fixes: (and potential introductions)
Anywho, I'm currently evaluating Modo to see if I should jump in and preorder 401 before it's too late. As a result I won't have enough free time during the next few days to add anything fancy like your drag & drop idea. I kinda think the context menu will be quicker for you, though. Once the weekend rolls around I can give it a go if you still think it's warranted. Thanks for all the suggestions, btw. I'm glad someone's actually making use of this thing, lol!
Mate! I'm amazed again!
Could you please enquire about taking over plugin development for the whole job!
I've always wondered you know why there aren't places you can buy alternative plugin exporters that feauture simplicity of use export to render apps than those that maybe avaiable free. Yours is a good example!
I wouldn't suggest for one minute that Pavol hasn't done a good job of the plug for SU > MR, though development has been fairly slow, though it took NL some time to develop export to MR from Modo! Which I think you would be wise to grab Modo, would do the same if things weren't so quiet!The HDRI lighting in preview has me licking my lips!
Mate I reckon you should talk with the Guys at thea too - if developing is a hobby or interest!
Thanks a heap again mate!
I am on OSX and your rb does not work for me.
Everytime I open de dialog mxm conversion is disabled and I have to manually enable it. Then the path does not stick in the box either. The path I copy paste in to right folder does not stay there after I close and reopen the dailog.
All my materials remain "no materials assigned" no matter what I seem to do.
Could you look into this for an OSX user.
The plugin looks very promising though. Thanks in advance.
Sorry you're having trouble. Are you hitting the "scan" button after you paste in the path? After you paste in the "auto mxm path" and hit "scan", you should see a list of all the mxm files the plugin could locate within that path. Once you hit the "continue" button at the bottom of this list you should be back to the main screen and see all the appropriate materials highlighted (those that are named the same as mxm files).
So I guess my question at this point is.. what happens when you paste in your path and hit scan? Do you get a listing of files, or does nothing happen at all? Even if you typed in some nonsense path you should still be seeing a list telling you no mxm files were found...
Also, are you able to manually assign mxm files? If you click the "no material assigned" text, does it open a file browser and allow you to choose your mxm files that way?
By the way mate your cut paste option is all needed to do the job!
Hope you can get Francois sorted I know he's been having liitle joy with a few maxwell issues!
yes, after I hit the scan button to right folder the list shows up and I can continue. But then I am returned to MXM reporter as it was. I can then manually assign mxm materials. Obviously that is to much of a job with a regular project.
Also when I close MXM reporter and reopen it, the auto MXM is disabled again and the scan path shows "c:\materials" again instead of the path I directed it to before. The manually assigned MXM materials remain assigned though.
I am afraid you need need a Mac to further test. Any help is very appreciated though, and thanks for your efforts anyhow, for PC users your plugin must be very useful.
Indeed Richard, I have some issues...
Glad to hear it, Richard!
Francois, I'm still confused about what you need me to test. You said you were able to scan your auto MXM path and get a list. Are no mxm files being shown in the list? If it's not finding any mxm files, can you tell me what path is shown immediately under "MXM Scan Results"?
If the scan IS finding your mxm files, what is the problem you are having after that? Are you saying that none of the mxm files that the scan found are being assigned to any sketchup materials? That everything is still shown as "no material assigned"? Are you sure the sketchup materials are named the same as your mxm files? For instance, if you have a sketchup material named "concrete" you should have an mxm file somewhere in that auto mxm path named "concrete.mxm". If you check out the screenshot of my plugin you will see what I mean by looking at the purple entries.
So, let's assume that you are naming your sketchup materials to correctly match the mxm filenames you were able to find in the scan, but none of them show up as linked when you return to the main screen. If you export to maxwell and look at the render, are the correct materials showing up then? (Keep in mind that the Maxwell exporter has its own auto mxm path set inside its options dialog).
I won't be able to test on an osx system anytime soon, but I guess I can look into installing a "hackintosh" virtual machine. I just have a strange feeling that something else is causing the problem, since the process of storing the scanned mxm filenames in a list and checking that list for each sketchup material's name is relatively straightforward and shouldn't be affected by what operating system you are running on. Once you get a list of mxm files after you hit scan, the operating system you are using should no longer be a factor. I hope you understand my reasoning..
Anyway, you're right about the auto mxm toggle being disabled, and the path being reset each time you open MXM Reporter. On the PC the auto mxm path is set to whatever the maxwell exporter is using. Since it doesn't know where to look for the exporter settings on osx, it just uses a default value of "c:\materials". Starting out with auto mxm disabled seems like the right thing to do, otherwise it might confuse people who would see it enabled and see the path set correctly and then never think that they needed to hit scan. I can make it so the auto mxm path persists when you open/close MXM Reporter, but I think the better alternative is to just find where the maxwell exporter is saving its config file on osx. This should be relatively easy using spotlight, if you want to give it a shot. On the pc this file is called "MaxwellRender.ini" and contains a line starting with "MXMPath".
Again, I'm sorry you're having trouble. I'll look into installing some sort of virtual machine to test with, but I still want to make sure that your mxm files are being located when you scan, that your sketchup materials are named correctly, and that maxwell renders the scene with the correct mxm materials regardless of what MXM Reporter says.
Thanks for your patience..
The MaxwellRender.ini file is just stored in the home folder of the user. I am not sure if you can set the MXM plugin to store it somewhere else.
The problem is that materials under OSX must be named glass.mxm for instance in the material panel of Sketchup. Otherwise auto MXM does not work. If I change the material in just "glass" and copy/paste the right path in MXM reporter than your rb will work well. But then of course I will not export the file properly for auto MXM to work. So the problem is with .mxm in the material names in Sketchup.
WOW, I had no idea osx users needed to use ".mxm" in their sketchup material names! On the pc if you have ".mxm" in the name it WON'T work on export. How strange...
Thanks for the help!
Please, register (free) to access all the attachments on the forums.
with your latest rb I will list here my results:
1. the path is now correct by default
2. I can manually asign the materials.
3. clicking a material in the MXM reporter highlights the material in the SU material panel. Nice.
this does not:
1. auto MXM remains disabled by default
2. double clicking the assigned material does not open de material editor
3. this the result when I hit "scan". MXM reporter should have found the assigned materials.
Auto MXM Scan Results
MXMPath = /Applications/Maxwell%1.7/materials%database/MXM%library
Located 0 Materials
Hope you still feel inspired to get it to work,
Yeah, selecting sketchup materials in MXM Reporter will always update sketchup's material panel, and vice versa.
Auto MXM will always start out as disabled whenever you start MXM Reporter. This seems to really bother you though, so I guess I'll change it up so that it remembers your setting between opening/closing MXM Reporter (but only if you have files scanned in that it can use).
I doubt those "%" characters are supposed to be in your path like that. Can you open up the "MaxwellRender.ini" file in your home directory with a text editor and look for the line that starts with "MXMPATH="? See if those "%" characters are being used in there instead of spaces.
Getting closer.. lol
yes those "%" characters are in the ini file when I open it with a texteditor.......
I also thought there might be a problem. But your previous rb actually found the right path when I typed it in so if you changed nothing there it should not give a problem now.
You are getting closer I think as well
I think that is an issue on the Mac that the Mac doesn't seem to turn a toolbar on just because it was on last time SU was used. Someone figured out this little code snippet and it seems to work:
where "toolbar" is the variable name of your toolbar object. Add that line after all the menus and toolbars have been loaded in your script. That should do the trick to make it be turned on when a Mac users starts up SU.
Sheesh, it really seems like two different people made the pc/osx versions of the maxwell exporter & plugin. I don't understand why there are so many inconsistencies. Ah well.
Try this new version, Francois. The plugin should now replace those "%" characters with spaces. I'm not sure why their osx exporter is saving it in that format, though. I'm curious what would happen if people used "%" in their folder names. You OSX people have it rough, lol!
If you enable auto mxm and scan a folder, those auto mxm settings will now persist throughout the sketchup session. So now if you close and reopen MXM Reporter you won't need to reenable or rescan anything.
That just leaves the maxwell material editor (mxed) to deal with. Francois, can you use spotlight and search for where "mxed" is located on your system? Let me know if it has a goofy extension like ".exe" or something, too. Also, can you open sketchup's "ruby console" window and then click on any of the assigned mxm files in MXM Reporter? When you click on the mxm file it should print out a line in the ruby console telling you where MXM Reporter is looking for mxed. That should help narrow down what the problem is.
Btw, thanks for the suggestion, Chris. This was a different issue, though. Just some html form control settings on the webdialog that Francois wanted me to persist.
Please, register (free) to access all the attachments on the forums.
Ahh, gotcha. My mistake. I thought it was the lazy toolbar bug/issue popping up again.
update on Version 0.4c
its works !!
But....... you have to remove "MXMPath = " from your default in the auto MXM path. At first I tried your plugin but it could not locate any materials and MXM reporter kept disabling the auto MXM. As soon as I removed "MXMPath = " from the Path in your plugin MXM reporter made a proper list and things worked out.
Clicking on a MXM material in the MXM reporter list does not bring on MXED though.
One material though when clicked in MXM reporter highlight the default material in Sketchup instead of the proper SU material. It happened once , but I did not check thoroughly with other files.
Can you bring "continue" to the top of the scan list. In most cases I am not very interested in the scanlist and just want to move on without having to scroll down.
What is the consequence of ambiguous material names ? and why did you list in the scanlist
Can you make the MXM reporter dialogbox sizable ? Its a rather large window.
Can you skip the path from the MXM materials list that is already in the "auto MXM path box". It would be easier to quickly read the list. The path since its already shown does not need to come up with every material again.
Ha, I hope I am not giving you unwanted homework to do. I am already happy with MXM reporter since it gives me a tool to debug a file before it has gone through the export MXM plugin.
the ruby console shows up with this
MXED PATH: /Applications/Maxwell/mxed.app/Contents/MacOS/mxed
The application path in my case is
MXED PATH: /Applications/Maxwell 1.7
The application mxed in my case shows up in the Maxwell 1.7 folder as just mxed. No .anything
Maybe you should have a manual path guide in MXM reporter since I think many for instance do not have a Maxwell 1.7 folder but just a Maxwell folder to locate.
some further testing show me that sometimes the .mxm path is neccesary but sometimes not. I had for instance a material that worked both ways but other only worked when I attached .mxm to the material name in SU.
more request, maybe impossible.
Can you make the list in MXM reported a little more interactive. Like the option to change material names in the list or rename them and maybe even to delete a set of materials from the SU file. In SU I can not delete more than one material at once. Can you imagine deleting 20 materials by deleting them one by one.....
Ok, thanks again a lot,
Ok, I'm now parsing the MXMPath line in the MaxwellRender.ini config to accommodate any spaces before the equals sign. That was just another case of a formatting difference between windows and osx.
I hardcoded in the "/Applications/Maxwell 1.7" path for mxed. It should work for you now but I'd like to find a more generalized solution in case someone changes their installation directory or upgrades to a new version of maxwell. On windows there is an environment variable (MAXWELL_ROOT) that will always point to the correct folder. Would it be possible for you to send me the MaxwellExport.rb from your plugins folder so I can look and see if NextLimit is just hardcoding their path as well?
I changed the display of assigned auto mxm files (the purple entries) to not include the auto mxm path, like you had asked.
I'm not sure about moving the continue button on the scan list though. I kind of did it that way so that people would see any highlighted "ambiguous" mxm files. Right now you can hit the "end" button on your keyboard to jump to the bottom of the list. I guess I can add a "jump to bottom" link or something.
Also, that "ambiguous material names" list is just showing you that there are mxm files with the same name in different subfolders within your auto mxm path. So you might have a file named concrete.mxm in an "outdoors" folder, and another file named concrete.mxm in a "construction" folder. I don't know what method the exporter is using to decide which file gets applied on export. My plugin will just assume the first mxm file it finds is the correct one, and will highlight any other mxm files with the same name in red to let you know that they won't be used by MXM Reporter. So it's best to use the "ambiguous material names" list to help you rename your mxm files so that they're all unique.
The MXM Reporter dialog box should already be resizable, and it should remember its size and position when you close and reopen it. I do have it set to a minimum size of 640x480, however. Are you trying to make it smaller than that? For me things start to get pretty cramped and unreadable when you go that small. Maybe you have safari's font size set to be smaller than normal? Anyway, I just changed the minimum size to be 400x300. Hopefully that's small enough for you.
I would definitely like to know the official policy on naming the sketchup materials. The helpfile that comes with the maxwell plugin on windows doesn't mention using .mxm extentions at all. Right now I have it set so that on OSX you can have the sketchup materials named with or without the .mxm extension and they will be matched up with the auto mxm files in MXM Reporter. If the maxwell exporter always works with the .mxm extensions then just use them exclusively. I bet there is something about the filenames that are causing some to work without the extension and others not to. If you experimented enough you could probably figure it out.
I would rather wait and make sure all these other issues are squared away before I start adding more features. From what I've seen the sketchup api doesn't even allow you to rename materials, so I would be doing hackish workarounds like creating a new material and copying over all the attributes. Then I would have to make sure all the stuff you had painted with the old material is now referencing the new material, etc, etc, etc. As far as deleting 20 sketchup materials like in the example you gave, I would do it by using the "purge unused" command in the sketchup material panel. In the future I can probably add more options for things like that in the context menus that pop up when using the right mouse button.
Anyway, let me know how this version works out, and remember to send the MaxwellExport.rb file if possible. It would also be nice if you could find a way to recreate that bug you mentioned seeing one time where selecting a material in MXM Reporter doesn't select it in sketchup's material panel. I know you can do it by renaming a sketchup material and not hitting "refresh" in MXM Reporter, but other than that it shouldn't happen. You can also cause problems if you keep MXM Reporter open while switching between different .skp files. In those cases you should close and reopen MXM Reporter so that it binds itself to the current model. This seems to be another case of the sketchup api missing important functionaility (sending notification when the current model changes).
Please, register (free) to access all the attachments on the forums.
it works now. Maybe I have just overlooked the proper highlight. I can not reproduce the wrong link to the SU material panel.
What not works, there is no mxed link when you double click materials in the MXM reporter. When you double click a material in MXM reporter the associated material highlights in the SU material panel but there is no other vise versa link.
Still, thanks a lot. It makes life a little easier this way being able to actually see a listing and getting a visual on what to expect from auto MXM.
The ambigious names are indeed handy, I am starting to clean up my MXM library to make sure there are no longer doublures.
Last edited by frv on Tue Jun 23, 2009 11:54 pm, edited 1 time in total.