GrabDoc is an add-on for quickly baking trim sheets and tileable texture maps.
After installation, run the one-click scene setup and then start modeling! GrabDoc provides a camera object with the ability to preview your rendered texture maps in real-time via custom shaders in Workbench, EEVEE, and Cycles. Once satisfied you can bake all maps using the default baker or using Marmoset Toolbag's baker for the best results!
GrabDoc features many custom shader setups for baking, such as:
For compatible map types (listed above) you can bake using Workbench, EEVEE, and Cycles!
You may preview your rendered texture maps in real-time via the Bake Preview system. This is useful for seeing your final result on the go without needing to re-output new images after an iteration.
Texture bakes are fast and can even be small when utilizing lossless & lossy compression.
We support the most common texture map formats, including:
No changelog for this release.
This extension does not require special permissions.
Hi Ethan, thanks for the update. Although the core of the add-on is rather aligned with the goal of this platform, there is a part that doesn't.
From the Terms of Service: "Extensions should not require any external functional components (other than Blender itself) that need to be downloaded from elsewhere."
In your case this means removing the part related to Marmoset Toolbag support from the interface.
If you can't (or don't want to) change your extension to adapt to it, you can self-host it without this restriction.
You can also have a version that adds just the Marmoset bit (or even only its interface even, if it makes it simple) and host only that externally.
We've added new mandatory fields: Featured Image and Icon. Featured Image is shown at the home page instead of the first preview image, and icon is shown in the extension's title (and later will be shown in Blender as well).
Could you please update your extension with an icon and a featured image?
Apologies for the late heads up.
Note: this extension includes quite a lot of redundant look-ups:
scene = bpy.context.scene
scene_shading = bpy.data.scenes[str(scene.name)].display.shading
This can be replaced with
scene = context.scene
scene_shading = scene.display.shading
get_create_addon_temp_dir
.with tempfile.TemporaryDirectory() as temp_dir: ...
is better practice.bpy.utils.extension_path_user
.Hey @campbell! Thank you for the review. I'll be submitting changes that resolve all points from your comment and previous ones.
Two things regarding bpy.utils.extension_path_user
:
toml
file instead of using the bl_info approach to support this everywhere? Error below:Python: Traceback (most recent call last):
File "C:\Users\ethan\AppData\Roaming\Blender Foundation\Blender\4.2\scripts\addons\GrabDoc\operators\operators.py", line 295, in execute
context, self.baker.suffix, path=get_create_addon_temp_dir()[1]
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ethan\AppData\Roaming\Blender Foundation\Blender\4.2\scripts\addons\GrabDoc\utils\generic.py", line 102, in get_create_addon_temp_dir
temp_path = bpy.utils.extension_path_user(package)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Blender Versions\Current\4.2\scripts\modules\bpy\utils\__init__.py", line 814, in extension_path_user
repo_module, pkg_idname = _extension_module_name_decompose(package)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Blender Versions\Current\4.2\scripts\modules\addon_utils.py", line 1203, in _extension_module_name_decompose
raise ValueError("The \"package\" does not name an extension")
ValueError: The "package" does not name an extension
Thank you!
Hey everyone,
Just a heads-up about a recent change regarding the licensing of add-ons on the Blender extension platform. Moving forward, all add-ons will need to be released under the GNU/GPL 3.0 license (SPDX:GPL-3.0-or-later). This is mainly to keep things simple and consistent across the board.
Previously, we accepted various licenses as long as they were compatible with Blender’s distribution. However, to avoid any confusion and streamline the process, all add-ons using the bpy API should now be presented as GPL 3 (the same license the Blender bundle is distributed). Regardless of whether the original code was under GPL 2, or something else like MIT or ZLIB.
Existing add-ons versions won't be affected. However, new updates will need to comply to the revised requirements.
Thanks for understanding, and feel free to reach out if you have any questions.
I submitted a new version of GrabDoc (1.4.5) with an updated blender_manifest.toml
file and all the previously requested changes. Please disregard any prior questions, as I've managed to work through them.
However, I ran into another issue; when attempting to enable my add-on via manual install, it is blocked by a traceback saying the toml
file doesn't exist. This is interesting because it's clearly reading the toml files information, otherwise the version and tagline wouldn't be visible. I've included a screenshot of what I'm talking about in the link below. Thanks for the help!
Hi, seems like that the folder path to the blender_manifest.toml in the get_version function was wrong, now it start up with no errors! :)
.zip file with fix in the github comment https://github.com/oRazeD/UVToolkit/issues/2#issuecomment-2323481056
This is kind of a feature request, but is there any way we could optionally have the extension description be based on the already present README.md
file, and furthermore preview-able from inside Blender? I have to update these texts in many locations, and consolidating as many of those locations as possible is important. Additionally, if users are able to install directly from Blender, they should arguably be able to preview the most important information from there as well. Thanks for this awesome system in any case, this is a great idea.
Would you expect also to have the description (optionally) updated everytime you send a new version?
Yeah, this would definitely be a big component of it to mirror the behavior with GitHub. The first upload behavior autofilling the readme.md
into the description is a nice quality of life boost.
Has anyone experimented with GitHub Actions with the Extensions system yet? If description autofilling is implemented and there is some way to interact with the extensions website via some web API, I wouldn't mind creating a minimal working example. Thanks for the help!
I'm confused about entire marmoset file and what its doing. Can't find it in UI. It also seems to be searching for version of marmoset and some HDRI file inside it? In general we do not allow extensions that require other software, especially commercial one to be installed. I'd like clarification on that one.
Overall I'm very impressed by this add-on and especially its UI (although name reminds me of Microsoft word). It seems to be very idiot-proofed and accounts for almost all cases. Once marmoset question is resolved we will approve.
Couple notes:
I'm confused about entire marmoset file and what its doing. Can't find it in UI. It also seems to be searching for version of marmoset and some HDRI file inside it? In general we do not allow extensions that require other software, especially commercial one to be installed. I'd like clarification on that one.
This was a prior request, the marmoset.py
file is integration for another software, but I've done the work of removing every single relevant UI element so it is no longer usable. I can remove this file entirely if it's preferred, but I was trying to minimize differences between my branches. This is your call.
I'm confused about "Compositing" tag, does this do anything related to compositing?
While I don't use the compositor for any specific reason, I have update plans that involve using it. I currently have operators that run commands for merging textures together, which I would consider a compositing operation. I've replaced the Camera tag with the Material tag locally and will submit the next time it is convenient.
For "Report Issues" link it would be better to provide a link to creation of new issue on github, so users unfamiliar with it don't have to search for it themselves.
Done!
marmoset.py
is imported by the add-on and that's not ideal. You can keep the file if you want, but at least it shouldn't be imported. Only code that is actually used should be registered by add-ons.
Thanks
Sign in to comment.
This add-on makes use of an updater which connects to the internet without user consent, further, add-ons should not be including their own updating functionality as this is not their responsibility.