Apply one texture image across multiple interior faces that are components

Hello, I want to create a mockup of an assembled 3D wooden dinosaur puzzle after applying an image to the flat pieces. The pieces are prepared on a flat sheet for a laser cutter/CNC machine… so after applying the image to the flat sheet, the pieces will be cut and moved into their assembled position (creating a collage of the image on the dinosaur).

Here is a simplified setup to demonstrate. I want to apply the flower image to the rectangle with the 2D pieces, then the pieces should cut up the flower image and show the correct parts of the image on the assembled version of the dinosaur in the new position.

I imported the image as a texture, and saw the method to sample a ‘projected’ texture and paste it inside the interior faces. But as others have noted, the texture only maps properly when the interior pieces are not a components. I assume components are needed to have a copy of each piece that automatically updates in the assembled dinosaur. I would have to paste the texture before creating components, create the components for each piece, and then move each piece into the new position.

This is a good start, but it makes the process very long for prototyping… if I want to test with another image, I would have to do the whole process over again, and there are lots of pieces!

I checked other similar questions, and it seems like it’s not possible to map the one texture properly across multiple components. Can someone confirm or provide guidance on if it is possible? Or maybe there’s a different approach with a texture as a linked image file that can be updated externally in Photoshop and reloaded in SketchUp? Or any way to automate this process so it can be done quickly? A script? I really don’t know…

Thanks a bunch!

You could apply the texture image to the objects and use the Materials Tools to move materials from instances to faces. Or you might explore Thru Paint by Fredo6.

I’m not sure what you mean by that.

Materials Tools is an extension available from the Extension Warehouse.

Thanks, I will check those out!

I’m curious what you are trying to achieve?
Your current ‘method’ will only give you a dino model with random bits of the flower image that don’t align in any way.

ThruPaint may be the easiest solution, but with the normal tools you can set a texture to be projected, sample it, then double click into each of the groups, select all, paint.

The image to be projected would need to be perpendicular to the 3D model bits you want to project onto, and scaled to be at least the width and height of the geometry, as viewed from where the image is located.

I found the T-Rex model you are using, and stacked up some repeats of one of the parts, then went into each copy and painted the projected image.

Your dinosaur has a lot of triangles in it, as if you had imported the parts without merging coplanar edges. You could clean that up a bit with the CleanUp extension:

https://extensions.sketchup.com/extension/046175e5-a87a-4254-9329-1accc37a5e21/clean-up

That extension uses TT-Lib, so install this extension first:

https://extensions.sketchup.com/extension/c03a2b93-3365-4ef1-95f4-f35158757622/tt-lib

Exactly, I don’t want them to align. The dino will end up being a collage with pieces of the original image. (Not the original image projected onto the dinosaur)

Maybe I wasn’t clear, because I don’t want the image to be aligned as if it’s projected onto the dinosaur… the pieces should cut the original image and remix it to make an abstract collage on the dinosaur. Just like if the flower were printed to the flat pieces in real life, and then the pieces were cut and assembled into the dinosaur structure.

Maybe an easier way to understand it is like a sliding puzzle, where I want to show both the solved and unsolved version of the puzzle using the same one image.

My solution so far, with the result in a screenshot below:

  • apply the texture to the outer rectangle, before making components (it ends up getting applied to only one of the interior rectangle)
  • sample the texture from the one rectangle and paint it into all the others
  • select each rectangle one-by-one and convert each to a component
  • copy each component and move it into the new desired position

This whole adventure was to allow me to mockup different images quickly without remodelling everything. So to change the image after:

  • right-click the texture in any of the pieces and choose “Edit textured image”
  • edit the image in an external editor like Photoshop to paste in the new image. Flatten any layers and save.
  • the texture will be replaced in SketchUp with the new version of the image, positioned nicely in the solved puzzle, and mixed up in the unsolved puzzle where the components were moved.

Here it is after updating editing the textured image, replacing the flower with a dog…

Of course I’m open to feedback. Or maybe there a better way, but this worked well enough for me for now. Hope I was clear!

I did try your suggestions, but gave up…

I installed Material Tools and couldn’t find any menu item or buttons to explore. I couldn’t find “move materials from instances to faces”. And the “more information” link was just a GitHub repository with no instructions. If you can provide more instructions I would be happy to try again.

ThruPaint and “Painting across the boundaries of components and groups. You don’t need to open groups and components to paint their faces or edges.” looks helpful, but it won’t let me install the extension. It only lists as being compatible with up to SketchUp 2021.

Something like this.

1 Like

Yes, except when I paint the texture, it isn’t mapping continuously like yours. How did you do it? Each click for me resets the origin of the texture…

I was replying to your post but you deleted it

I installed TT_Lib2 and think I had to restart SketchUp for Material Tools to appear in the Extensions menu. (Or maybe I’m just silly and missed it). “Material Instance to Faces” sounds nice for copying the texture to other instances of the components, but I can’t paint the texture continuously across components, as noted in my previous reply to Box.

I found ThruPaint 2 on Sketchucation, thanks. (I think the one I found from the extension warehouse in Sketchup was the old version). It allows me to paint the components on the same surface continuously as desired, and the texture gets applied to any other instances of the component. Nice!

Only thing that would be great is if I can swap the texture with another without editing the texture image in an external editor.

What I said earlier still applies. You would want the source image as a texture, and above the tiles you want to project onto. Set the source texture to Projected, sample it, then go into each of the groups and paint that texture.

Make sure the tiles are not a component. Or, they can all be unique components.

With ThruPaint painting the texture inside the components, is it possible to rotate the texture continuously with the components as well? As you can see, when I rotate the texture on the outside, the triangle component doesn’t rotate with it:

I was confused by your solution, and from the looks of your screenshot, the cutout pieces don’t look correct. Sorry if I misunderstood, but I need the image texture on the flat sheet with the cut lines for the pieces (this will be used to send to the laser cutter/CNC machine) and a copy of the cutout pieces assembled into the dinosaur (for the mockup). Your screenshot shows the image mapped continuously across the separate pieces, as if the image is projected on the dinosaur. But in real life, the cutout pieces would have different parts of the image and create a mixed up collage of the original image across the dinosaur.

I did my thing before you explained that you do want the textures to be broken up and randomly rotated.

The part I said about placing the texture above, or in front of, the bits of geometry you want to project on to is still true. In your screenshot it looks like the source image and the geometry are flat on the ground next to each other. I wouldn’t expect the source image to project onto the geometry correctly.

Here is a flower picture projected onto the shapes in the dinosaur model, then each piece made to be thicker, and made into a group. The image is floating above the pieces, and scaled to be slightly bigger than the area occupied by the pieces.

Here’s the model:

Dino parts with projected texture.skp (2.9 MB)

It looks like your texture is not set to Projected