{"id":1267,"date":"2019-05-23T20:52:30","date_gmt":"2019-05-23T18:52:30","guid":{"rendered":"https:\/\/zoltane.com\/pages\/?page_id=1267"},"modified":"2019-05-23T20:52:30","modified_gmt":"2019-05-23T18:52:30","slug":"texture-scope-change","status":"publish","type":"page","link":"https:\/\/zoltane.com\/pages\/artengine\/texture-scope-change\/","title":{"rendered":"Texture scope change"},"content":{"rendered":"<section class=\"wpb-content-wrapper\"><p>[vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]My biggest problem with the otherwise great <a href=\"https:\/\/www.allegorithmic.com\/products\/substance-source\">Substance Source Material Library<\/a> is that the scope of the textures, the area they cover is very small, usually in 1\u00d71 to 2\u00d72 meters. There is no support in Substance to increase the scope of materials so if I wanted to avoid excessive tiling on even moderately scaled surfaces then I pretty much had to redo the material from scratch. The issue also crops up with photogrammetry where sometimes a wider shot of a surface is impossible to obtain.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column width=\u201d1\/3\u2033 el_class=\u201dimage_frame\u201d][vc_single_image image=\u201d1289\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d][vc_column_text]<\/p>\n<p style=\"text-align: center;\">(\u0ca0\ufe43\u0ca0)<\/p>\n<p>[\/vc_column_text][\/vc_column][vc_column width=\u201d1\/3\u2033][\/vc_column][vc_column width=\u201d1\/3\u2033 el_class=\u201dimage_frame\u201d][vc_single_image image=\u201d1290\u2033 img_size=\u201dmedium\u201d alignment=\u201dright\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d][vc_column_text]<\/p>\n<p style=\"text-align: center;\"><strong>(\u2661\u00b0\u25bd\u00b0\u2661)<\/strong><\/p>\n<p>[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]Fortunately with the advent of machine learning there is now possible to work around the problem: Enter <a href=\"https:\/\/artomatix.com\/artengine\/\">Artomatix ArtEngine<\/a>!<\/p>\n<p>\u00a0<\/p>\n<p style=\"text-align: center;\"><em><strong>\u201cArtEngine hosts a set of features aimed specifically at increasing the users ability to exercise their texture vision, while also reducing the time needed to achieve it.\u201d<\/strong><\/em><\/p>\n<p>[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_separator type=\u201dnormal\u201d][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]In order to use ArtEngine to change the scope of a material first we have to prepare a texture atlas of all the pieces we have. With Substance this means randomizing and saving a texture set several times, creating typically 2\u00d72, 3\u00d73 or 4\u00d74 tiles. (In this article I\u2019ll only show the base color textures but ArtEngine processes all the textures in a PBR set so they remain matched.)<\/p>\n<p>\u00a0<\/p>\n<p>There are a few ways to do that:[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column width=\u201d1\/2\u2033][vc_single_image image=\u201d1287\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][vc_column width=\u201d1\/2\u2033][vc_column_text]The atlas can be built in any 2D image editing application by snapping the images (saved from Substance Player) to each other in a properly sized canvas. This is fairly quick to do if we only need color but gets increasingly tedious with additional channels.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column width=\u201d1\/2\u2033][vc_single_image image=\u201d1286\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][vc_column width=\u201d1\/2\u2033][vc_column_text]Alternatively in Substance Designer we can link up several instances (with different seeds) to <a href=\"https:\/\/share.substance3d.com\/libraries\/20\">Bruno Alfonseca\u2019s Atlaser node<\/a> , creating the atlas. Linking up the channels is somewhat tedious and depending on the used materials it can also get time and memory consuming to render the outputs.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column width=\u201d1\/2\u2033][vc_single_image image=\u201d1288\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][vc_column width=\u201d1\/2\u2033][vc_column_text]Something similar can be done right in ArtEngine too. There the material channels are handled as a single unit which is nice but setting up the Free Transform nodes is a fair amount of donkey-work.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]And finally we can use <a href=\"https:\/\/imagemagick.org\/index.php\">ImageMagick<\/a>, a command line tool to assemble the image. Its <a href=\"http:\/\/www.imagemagick.org\/Usage\/montage\/\">Montage<\/a> feature is exactly what we need. For example the following command<\/p>\n<p>\u00a0<\/p>\n<pre>magick montage wood_red_cedar_Base_Color* -geometry +0+0 wood_red_cedar_Base_ColorA.png<\/pre>\n<p>\u00a0<\/p>\n<p>would create an atlas (called \u201cwood_red_cedar_Base_ColorA.png\u201d) from files called \u201cwood_red_cedar_Base_Color1\u201d, \u201cwood_red_cedar_Base_Color2\u2033 and so on.<\/p>\n<p>Writing this command is not super comfortable but much faster than any other method when it comes to many files like full PBR channel sets in a 4\u00d74 grid.<\/p>\n<p>[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]With the atlas done we can import the texture to ArtEngine and turn them into a material. The exact node graph processing it depends on the contents of the texture so let\u2019s see a few typical use cases.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_separator type=\u201dnormal\u201d][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column width=\u201d1\/2\u2033][vc_single_image image=\u201d1293\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][vc_column width=\u201d1\/2\u2033][vc_column_text]This is the simplest graph: the 3\u00d73 atlas of the torn cardboard texture and a black and white image is fed to the mutation node. The latter picture is the \u201cignore mask\u201d where the black lines, covering the seams between the atlas cells, mark the areas which should be, well, ignored by the algorithm.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column width=\u201d1\/2\u2033][vc_single_image image=\u201d1294\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][vc_column width=\u201d1\/2\u2033][vc_column_text]The 3\u00d73 atlas was stitched from 512\u00d7512 images exported from Substance Player, producing a 1536\u00d71536 texture.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column width=\u201d1\/2\u2033][vc_single_image image=\u201d1292\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][vc_column width=\u201d1\/2\u2033][vc_column_text]The result is a 2048\u00d72048 image (ArtEngine only deals with power-of-two resolutions) but the feature size remains the same as on the input texture. I left the Mutation node\u2019s settings on default.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_separator type=\u201dnormal\u201d][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column width=\u201d1\/2\u2033][vc_single_image image=\u201d1296\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][vc_column width=\u201d1\/2\u2033][vc_column_text]In the case of this crooked medieval roof I used a 3rd input image, a structure guide to give ArtEngine a rough idea what pixels belong together.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column width=\u201d1\/2\u2033][vc_single_image image=\u201d1297\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][vc_column width=\u201d1\/2\u2033][vc_column_text]I didn\u2019t spend a lot of time on this, simply applied an edge detection filter on the heightmap, but it turned out to be good enough.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column width=\u201d1\/2\u2033][vc_single_image image=\u201d1314\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][vc_single_image image=\u201d1295\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][vc_column width=\u201d1\/2\u2033][vc_column_text]I zeroed out all the variation parameters of the Mutation node so it only replaced the seams (filled the black areas on the ignore mask). The result is not perfect but fairly good. With a better structure image and wider black lines in the ignore mask things would probably look even better.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_separator type=\u201dnormal\u201d][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column width=\u201d1\/2\u2033][vc_single_image image=\u201d1299\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][vc_column width=\u201d1\/2\u2033][vc_column_text]For this medieval wall I did build a proper structure image which improved the result considerably.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column width=\u201d1\/2\u2033][vc_single_image image=\u201d1300\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][vc_column width=\u201d1\/2\u2033][vc_column_text]I toned down the vertical variation of features so the brick layers are maintained.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_separator type=\u201dnormal\u201d][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column width=\u201d1\/2\u2033][vc_single_image image=\u201d1302\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][vc_column width=\u201d1\/2\u2033][vc_column_text]Now let\u2019s take a bit more complicated graph. We start with for variations of this flowery grass texture.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column width=\u201d1\/2\u2033][vc_single_image image=\u201d1301\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][vc_column width=\u201d1\/2\u2033][vc_column_text]This first part of the graph assembles them into an atlas.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column width=\u201d1\/2\u2033][vc_single_image image=\u201d1305\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][vc_single_image image=\u201d1303\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][vc_column width=\u201d1\/2\u2033][vc_column_text]Then we create an ignore mask to be used later. With a color selection node the flowers are marked black then a noise texture randomly whitens some of them. The usual black seam covering cross is blended in at the end.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column width=\u201d1\/2\u2033][vc_single_image image=\u201d1308\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][vc_column width=\u201d1\/2\u2033][vc_column_text]Next two mutations are created: one using the usual ignore mask, one with the most flowers ignored. The former creates a field with a uniform density of flowers which doesn\u2019t look organic. And that\u2019s where the second mutation, with sparser flower coverage comes in: using a noise texture we blend between the two to create a more natural result.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_separator type=\u201dnormal\u201d][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column width=\u201d1\/2\u2033][vc_single_image image=\u201d1316\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][vc_column width=\u201d1\/2\u2033][vc_column_text]Adding large scale details is also necessary when dealing with rock surfaces. Once again we start with a 2\u00d72 atlas and increase the scope.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column width=\u201d1\/2\u2033][vc_single_image image=\u201d1309\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][vc_column width=\u201d1\/2\u2033][vc_column_text]It looks good on the small scale but from afar the homogeneity is rather unrealistic.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column width=\u201d1\/2\u2033][vc_single_image image=\u201d1310\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][vc_column width=\u201d1\/2\u2033][vc_column_text]Let\u2019s do another, low-res mutation, scale it up with the Up-Res node (<em>almost<\/em> the equivalent of the \u201cenhance\u201d button in movies)\u2026[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column width=\u201d1\/2\u2033][vc_single_image image=\u201d1311\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][vc_column width=\u201d1\/2\u2033][vc_column_text]\u2026and blend it over the other image.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_separator type=\u201dnormal\u201d][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column width=\u201d1\/2\u2033][vc_single_image image=\u201d1317\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][vc_column width=\u201d1\/2\u2033][vc_column_text]It is also possible to mix quite different textures for a more varied result.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column width=\u201d1\/2\u2033][vc_single_image image=\u201d1312\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][vc_column width=\u201d1\/2\u2033][vc_column_text]The patches might end up looking very different from each other but the Color Match node can take care of that.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_separator type=\u201dnormal\u201d][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column width=\u201d1\/2\u2033][vc_single_image image=\u201d1313\u2033 img_size=\u201dmedium\u201d onclick=\u201dlink_image\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][vc_column width=\u201d1\/2\u2033][vc_column_text]Unfortunately changing the scope of wood textures remains a challenge. It makes a valiant effort of fixing the seams but it\u2019s still a mess. However there are a lot of possibilities in ArtEngine so I\u2019m not yet convinced it can\u2019t be done with it. I\u2019ll experiment more.[\/vc_column_text][\/vc_column][\/vc_row]<\/p>\n<\/section>","protected":false},"excerpt":{"rendered":"<p>[vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]My biggest problem with the otherwise great Substance Source Material Library is that the scope of the textures, the area they cover is very small, usually in 1\u00d71 to 2\u00d72 meters. There is no support in Substance&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1266,"menu_order":1,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1267","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/zoltane.com\/pages\/wp-json\/wp\/v2\/pages\/1267","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zoltane.com\/pages\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/zoltane.com\/pages\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/zoltane.com\/pages\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zoltane.com\/pages\/wp-json\/wp\/v2\/comments?post=1267"}],"version-history":[{"count":17,"href":"https:\/\/zoltane.com\/pages\/wp-json\/wp\/v2\/pages\/1267\/revisions"}],"predecessor-version":[{"id":1319,"href":"https:\/\/zoltane.com\/pages\/wp-json\/wp\/v2\/pages\/1267\/revisions\/1319"}],"up":[{"embeddable":true,"href":"https:\/\/zoltane.com\/pages\/wp-json\/wp\/v2\/pages\/1266"}],"wp:attachment":[{"href":"https:\/\/zoltane.com\/pages\/wp-json\/wp\/v2\/media?parent=1267"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}