Need some help - I am generating images for a client’s website - I have built a base model as a DC, and have trim and size options in the DC. I need to now generate 100s of variations of sizes - I will drop these into LO to generate all the images that the client needs as PNGs.
But… I have used materials on several surfaces and when I change the length options on the DC the materials scale and get wonky. I’m using asphalt shingles and vertical siding as textures that do not scale properly - they get stretched on the sides of the buildings that scale in length (so the vertical siding texture, which has been scaled to be about 7.5" wide planks, grows, and the planks get bigger and bigger the longer the building gets.
I have seen reference to a solution with a ‘scaler’ object but can’t get it to work inside nest dynamic components - it throws all the lengths off:
I have also found TIGs workaround script, but I have no idea on how to get it to work.
Has anyone solved this? I’m looking at saving a ton of manually painting every variation…
You can nest the component in the attachment inside any Component and it will fix the Material Scaling Issue.
Note that this component doesn’t has any dimension, so you could put it on any edge of your component without effecting the accuracy of the Component Bounding Box. Material Scaler.skp (11.3 KB)
As has been said, it should be nested inside the painted component, and if the Component is nested inside parent component, the material should be applied directly to the face level to make it works.
I hope that helps.
There are cases where scalers do not work, that is with DC internal copies where sizes change per copy. It may be the case if some of the parts are out of sync as well, hence the need to check if all the parts do not register the scale definition whereas some may. Some times an extra component wrap can correct (isolate) this.
I tested different materials and found that some of the materials scaled properly, and some didn’t. I think I have solved this by painting the texture I want, and then ‘Make Unique Texture’ on from the face. When I scale it all works correctly now.
Thanks for the help… hopefully I can get this to work through all the models.
Hello @bmike
Can you please explain a bit more?
you wrote 1. paint the texture you want 2. and then ‘Make Unique Texture’ from the face.
is this two-step process being done after putting a scaler inside each components?
does the material re-scale itself after ‘Make Unique Texture’ if I change the dimensions?
I would have to go back and make one from scratch, it’s been a year since I posted this and don’t remember the exact steps, but making the texture unique within the model I was working on was key.
Always make sure that you have the most current version of Dynamic Components Extension installed!!
Hm, after six hours of trying making this work I found out that the Dynamic Components Extension wasn’t up to date, and Sketchup Extension didn’t tell me.
Only after uninstalling it, and refiring Sketchup, it told me, there was an update!
If you get an this, it is probably out of date!
ERROR: Error: Could not find attribute: undefined @ /dcbridge.js[601]
Uninstall, and reinstall the Dynamic Components Extension!
Hey this material scaler is doing the trick but it creates a visible instance of the word “Scaler” everywhere it’s being used. Not sure what’s going on there, anybody know what that’s about? I’d love to know how to hide the appearance of that label.
It’s interesting to observe though, when I went to apply an appropriate tag to the scaler, that it appears to be causing my components to behave as if they’re groups in the sense that they’re not making common copies anymore - each instance is an individual copy so every copy I make is now unique and unconnected to the others.
that is a very unfortunate and questionable sacrifice…
The “Joist array <_TT.FramingGenerator#2>” is a DC that changes the number of copies of an internal element when it scales, so each container becomes a unique reproduction of the component. If I understand correctly, that much is normal DC function (a little quirky because if you discover a better way to write your component middle of a job, you have multiple active versions in the same file, but that’s another topic). That component included in the screenshot only for reference of normal functionality (and hopefully not just to demonstrate the depth of my non-understanding!!).
I put the material scaler in “rim joist <Component#2>” which is essentially a piece of dimensional lumber and the only DC attribute set is some scale handles are hidden. You can see there a handful of copies and it’s incrementing the component number each time I scale one of the copies, at the moment I finish the scale operation.
The other “rim joist <Component#58>” is one where I just ditched the material texture and am using a flat color. Copies of that one aren’t creating unique components when scaled, nor do copies with a texture / image-based material without the material scaler.
I’m sure you tested scaling all those components before you screenshotted your outliner and didn’t just make a bunch of copies… Kinda scratching my head - and totally appreciate the consideration you’ve already given this. Not essential for ME to have a solution to THIS issue, but it’s definitely something one encounters a lot if you use all three of those essential sketchup features - the scale tool, materials, and DCs.
Sorry misunderstood, ya when I scale an instance it becomes unique. Never associated that with the scaler, wonder why. I make anything of a different length unique anyways, so it doesn’t really affect my workflow.