From 49fb062cdfa699ee4fb6bb08ee256ca0568d067e Mon Sep 17 00:00:00 2001 From: yannk Date: Tue, 28 Dec 2021 16:44:50 +0100 Subject: [PATCH 1/3] Adding export option --- Makefile | 4 ++-- Makefile_export | 45 +++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 43 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index bca7fc7..6a06557 100644 --- a/Makefile +++ b/Makefile @@ -17,7 +17,7 @@ export TEXTURES := $(wildcard $(TEXTURESET_FOLDER)/*) ### RECIPE PART ### -all : previews subformats del_obsolete +all : previews del_obsolete export previews: $(SBSARFILES) $(MAKE) -f Makefile_previews all @@ -46,7 +46,7 @@ del_obsolete: $(SBS_DIR) fi ;\ done -export: $(SBSARFILES) +export: $(SBSARFILES) | subformats $(MAKE) -f Makefile_export all # Recipe to make sbsar, its main PNG files and its preset textureset file diff --git a/Makefile_export b/Makefile_export index b77316f..ca71a17 100644 --- a/Makefile_export +++ b/Makefile_export @@ -1,7 +1,44 @@ # Variables définitions -SRC := $(wildcard $(PNG1024_DIR)/*.png) +TEXTURE_LIST := $(notdir $(wildcard $(TEXTURESET_FOLDER)/*)) -all: - echo "MATERIALLIST :"$(MATERIALLIST);\ - rendertype=$$(cat $(MATERIALLIST) | jq -r --arg folder "$$presetname" '.[] | select(.name==$$folder) | .type');\ +# Build list of destination filenames for 1024 files +SRC_1024 := $(wildcard $(PNG1024_DIR)/*.png) +EACH_DEST_1024 = $(foreach DEST, $(shell cat $(MATERIALLIST) | jq -r --arg folder "$(TEXTURENAME)" '.[] | select(.name==$$folder) | .destination_1024 | join(" ")'), $(subst $(PNG1024_DIR)/, $(DEST)/, $(SRC_1024))) +DEST_1024 := $(foreach TEXTURENAME, $(TEXTURE_LIST), $(EACH_DEST_1024)) +REQUIR_1024 := $(PNG1024_DIR)/%.png +EACH_REQUIR_1024 = $(foreach DEST, $(shell cat $(MATERIALLIST) | jq -r --arg folder "$(TEXTURENAME)" '.[] | select(.name==$$folder) | .destination_1024 | join(" ")'), $(subst $(PNG1024_DIR)/, $(DEST)/, $(REQUIR_1024))) +TARGET_1024 := $(foreach TEXTURENAME, $(TEXTURE_LIST), $(EACH_REQUIR_1024)) + +# Build list of destination filenames for 512 files +SRC_512 := $(wildcard $(PNG512_DIR)/*.png) +EACH_DEST_512 = $(foreach DEST, $(shell cat $(MATERIALLIST) | jq -r --arg folder "$(TEXTURENAME)" '.[] | select(.name==$$folder) | .destination_512 | join(" ")'), $(subst $(PNG512_DIR)/, $(DEST)/, $(SRC_512))) +DEST_512 := $(foreach TEXTURENAME, $(TEXTURE_LIST), $(EACH_DEST_512)) +REQUIR_512 := $(PNG512_DIR)/%.png +EACH_REQUIR_512 = $(foreach DEST, $(shell cat $(MATERIALLIST) | jq -r --arg folder "$(TEXTURENAME)" '.[] | select(.name==$$folder) | .destination_512 | join(" ")'), $(subst $(PNG512_DIR)/, $(DEST)/, $(REQUIR_512))) +TARGET_512 := $(foreach TEXTURENAME, $(TEXTURE_LIST), $(EACH_REQUIR_512)) + +# Build list of destination filenames for 256 files +SRC_256 := $(wildcard $(PNG256_DIR)/*.png) +EACH_DEST_256 = $(foreach DEST, $(shell cat $(MATERIALLIST) | jq -r --arg folder "$(TEXTURENAME)" '.[] | select(.name==$$folder) | .destination_256 | join(" ")'), $(subst $(PNG256_DIR)/, $(DEST)/, $(SRC_256))) +DEST_256 := $(foreach TEXTURENAME, $(TEXTURE_LIST), $(EACH_DEST_256)) +REQUIR_256 := $(PNG256_DIR)/%.png +EACH_REQUIR_256 = $(foreach DEST, $(shell cat $(MATERIALLIST) | jq -r --arg folder "$(TEXTURENAME)" '.[] | select(.name==$$folder) | .destination_256 | join(" ")'), $(subst $(PNG256_DIR)/, $(DEST)/, $(REQUIR_256))) +TARGET_256 := $(foreach TEXTURENAME, $(TEXTURE_LIST), $(EACH_REQUIR_256)) + +all: $(DEST_1024) $(DEST_512) $(DEST_256) + +$(DEST_1024): */%.png: $(REQUIR_1024) + @ [ -d $$(dirname $@) ] || mkdir -p $$(dirname $@) + @ echo "EXPORT : Processing $(PNG1024_DIR)/$(@F) -> $@" + @ cp $(PNG1024_DIR)/$(@F) $@ + +$(DEST_512): */%.png: $(REQUIR_512) + @ [ -d $$(dirname $@) ] || mkdir -p $$(dirname $@) + @ echo "EXPORT : Processing $(PNG512_DIR)/$(@F) -> $@" + @ cp $(PNG512_DIR)/$(@F) $@ + +$(DEST_256): */%.png: $(REQUIR_256) + @ [ -d $$(dirname $@) ] || mkdir -p $$(dirname $@) + @ echo "EXPORT : Processing $(PNG256_DIR)/$(@F) -> $@" + @ cp $(PNG256_DIR)/$(@F) $@ From 38c3d56de1d240023e6dc93a703a35dcf8e16d47 Mon Sep 17 00:00:00 2001 From: yannk Date: Tue, 28 Dec 2021 16:47:29 +0100 Subject: [PATCH 2/3] Adding example informations for export --- example/material_list.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/example/material_list.json b/example/material_list.json index 3b76050..6191458 100644 --- a/example/material_list.json +++ b/example/material_list.json @@ -1,8 +1,10 @@ [ { "name":"texture_factory_test_preset0", - "description":"Texturefacotry testing material", + "description":"Texture factory testing material", "type":"bhonr", - "khanat texture folder":"ground" + "destination_1024":["build/export/project_A","build/export/project_B/1024"], + "destination_512":["build/export/project_B/512"], + "destination_256":[""] } ] From 20dc02d8dbe0ce40415d94c4e1796c9d89af2677 Mon Sep 17 00:00:00 2001 From: yannk Date: Tue, 28 Dec 2021 16:55:03 +0100 Subject: [PATCH 3/3] Adding information about json file content --- README.md | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index edf7f2b..2965a1a 100644 --- a/README.md +++ b/README.md @@ -10,42 +10,51 @@ The file `global-config.mk` contains configuration informations about paths to s Simply write either the absolute or the relative path from your Makefile script situation for any information needed. -## Sbsar files generation part +#### Sbsar files generation part You need to define a sbs source folder where the script will check for new content in the `SBS_DIR` variables content. You must write down also the place where the script will write the generated sbsar. -## Executables used +#### Executables used These are the adress of the substance automation toolkit binaries. Note you can use former variables defined sooner in the file, like it is done in the `--includes` section of MAKESBSAR. -## Texturesets files +#### Texturesets files This files will be used only internally by the script to check the texturesets it handles. -# Texture names possible +#### Texture names possible This variable is needed to recognize the files created as bitmaps from the substance source, it must include all the identifiers used in all the graphs, separated by a pipe and no space. It is used as regexp rule in the script. -## Png files folders +#### Png files folders Theses are the places where the script will generate the final png files. It will be the main repository used as reference to fill hereafter all the targets needed in any package needed. -## Blender related +#### Blender related You have to define also a blender file directory where you will store the files used to generate previews of texturesets. They will be handled vie the `material_list.json` file indicated in the following section. They will have to be organized a special way to function, see later. The `BLENDEREXEC` variable is the path to the binary used to generate the preview. It must be compatible with the version used to save the renders files. -## Logo file +#### Logo file Indicate any logo you would need as watermark in any of the content. -# Destination preview folder +#### Destination preview folder Where you will save the renders of the previews of each textureset generated by Blender. -# Material list +#### Material list The path to the json file used to manage all the metadata linked to texturesets and proper management of the content generated by the script. It must comply to a specific organisation and content to work properly. + +### Configuration of the json file + +- « `name` » is the mundane texture name +- « `description` » is the description of the texture +- « `type` » is the subfolder name in `BLENDFILES_FOLDER` in the `local-config.mk` file the blender files used to generate the rpeviews are stored +- « `destination_1024` » is the folders names list where to copy the generated textrues files in 1024x1024, it can be left with an empty field if non-relevant. +- « `destination_512` » is the folders names list where to copy the generated textrues files in 512x512, it can be left with an empty field if non-relevant. +- « `destination_256` » is the folders names list where to copy the generated textrues files in 256x256, it can be left with an empty field if non-relevant.