Distributed rendering of single images #104327
@ -156,6 +156,12 @@ def register() -> None:
|
|||||||
max=100,
|
max=100,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
bpy.types.Scene.flamenco_job_submit_as_paused = bpy.props.BoolProperty(
|
||||||
|
name="Flamenco Job Submit as Paused",
|
||||||
|
description="Whether the job is paused initially; Checked sets the job to `paused`, and Unchecked sets the job to `queued`",
|
||||||
|
default=False,
|
||||||
|
)
|
||||||
|
|
||||||
preferences.register()
|
preferences.register()
|
||||||
worker_tags.register()
|
worker_tags.register()
|
||||||
operators.register()
|
operators.register()
|
||||||
|
@ -42,6 +42,7 @@ class FLAMENCO_PT_job_submission(bpy.types.Panel):
|
|||||||
col = layout.column(align=True)
|
col = layout.column(align=True)
|
||||||
col.prop(context.scene, "flamenco_job_name", text="Job Name")
|
col.prop(context.scene, "flamenco_job_name", text="Job Name")
|
||||||
col.prop(context.scene, "flamenco_job_priority", text="Priority")
|
col.prop(context.scene, "flamenco_job_priority", text="Priority")
|
||||||
|
col.prop(context.scene, "flamenco_job_submit_as_paused", text="Submit as Paused")
|
||||||
|
|
||||||
# Refreshables:
|
# Refreshables:
|
||||||
col = layout.column(align=True)
|
col = layout.column(align=True)
|
||||||
|
@ -33,6 +33,7 @@ log = logging.getLogger(__name__)
|
|||||||
|
|
||||||
def job_for_scene(scene: bpy.types.Scene) -> Optional[_SubmittedJob]:
|
def job_for_scene(scene: bpy.types.Scene) -> Optional[_SubmittedJob]:
|
||||||
from flamenco.manager.models import SubmittedJob, JobMetadata
|
from flamenco.manager.models import SubmittedJob, JobMetadata
|
||||||
|
from flamenco.manager.model.job_status import JobStatus
|
||||||
|
|
||||||
propgroup = getattr(scene, "flamenco_job_settings", None)
|
propgroup = getattr(scene, "flamenco_job_settings", None)
|
||||||
assert isinstance(propgroup, JobTypePropertyGroup), "did not expect %s" % (
|
assert isinstance(propgroup, JobTypePropertyGroup), "did not expect %s" % (
|
||||||
@ -44,6 +45,12 @@ def job_for_scene(scene: bpy.types.Scene) -> Optional[_SubmittedJob]:
|
|||||||
|
|
||||||
priority = getattr(scene, "flamenco_job_priority", 50)
|
priority = getattr(scene, "flamenco_job_priority", 50)
|
||||||
|
|
||||||
|
submit_as_paused = getattr(scene, "flamenco_job_submit_as_paused", False)
|
||||||
|
if submit_as_paused:
|
||||||
|
initial_status = JobStatus("paused")
|
||||||
|
else:
|
||||||
|
initial_status = JobStatus("queued")
|
||||||
|
|
||||||
job: SubmittedJob = SubmittedJob(
|
job: SubmittedJob = SubmittedJob(
|
||||||
name=scene.flamenco_job_name,
|
name=scene.flamenco_job_name,
|
||||||
type=propgroup.job_type.name,
|
type=propgroup.job_type.name,
|
||||||
@ -52,6 +59,7 @@ def job_for_scene(scene: bpy.types.Scene) -> Optional[_SubmittedJob]:
|
|||||||
metadata=metadata,
|
metadata=metadata,
|
||||||
submitter_platform=platform.system().lower(),
|
submitter_platform=platform.system().lower(),
|
||||||
type_etag=propgroup.job_type.etag,
|
type_etag=propgroup.job_type.etag,
|
||||||
|
initial_status=initial_status,
|
||||||
)
|
)
|
||||||
|
|
||||||
worker_tag: str = getattr(scene, "flamenco_worker_tag", "")
|
worker_tag: str = getattr(scene, "flamenco_worker_tag", "")
|
||||||
|
@ -224,3 +224,13 @@ well, and thus `\` becomes `\\`.
|
|||||||
In other words, even though it looks strange, this is not a bug in Flamenco. The
|
In other words, even though it looks strange, this is not a bug in Flamenco. The
|
||||||
aim is to prevent you from seeing these doublings as little as possible, but
|
aim is to prevent you from seeing these doublings as little as possible, but
|
||||||
unfortunately it cannot always be avoided.
|
unfortunately it cannot always be avoided.
|
||||||
|
|
||||||
|
### Assets are missing!
|
||||||
|
|
||||||
|
When your blend file references your assets (textures, linked blend files, etc.)
|
||||||
|
with an absolute path, **Flamenco assumes that this path is valid for all
|
||||||
|
Workers, and will not copy those assets to the shared storage.** This makes it
|
||||||
|
possible to store large files, like simulation caches, on the shared storage,
|
||||||
|
without Flamenco creating a copy for each render job.
|
||||||
|
|
||||||
|
Read more on this in [Absolute vs. Relative Paths](/usage/shared-storage/#absolute-vs-relative-paths).
|
||||||
|
@ -92,3 +92,26 @@ have arrived on a specific worker, without waiting for *all* syncing to be
|
|||||||
completed (as someone may have just submitted another job).
|
completed (as someone may have just submitted another job).
|
||||||
|
|
||||||
[jobtypes]: {{< ref "/usage/job-types" >}}
|
[jobtypes]: {{< ref "/usage/job-types" >}}
|
||||||
|
|
||||||
|
## Absolute vs. Relative Paths
|
||||||
|
|
||||||
|
Blender can reference assets (textures, linked blend files, etc.) in two ways:
|
||||||
|
|
||||||
|
- by **relative path**, like `//textures\my-favourite-brick.exr`, which is relative to the blend file, or
|
||||||
|
- by **absolute path**, like `D:\texture-library\my-favourite-brick.exr`, which is the full path of the file.
|
||||||
|
|
||||||
|
When an asset is referenced by an absolute path, **Flamenco assumes that this
|
||||||
|
path is valid for all Workers, and will not copy those assets to the shared
|
||||||
|
storage.** This makes it possible to store large files, like simulation caches,
|
||||||
|
on the shared storage, without Flamenco creating a copy for each render job.
|
||||||
|
|
||||||
|
{{< hint type=Warning >}} On Windows it is not possible to construct a relative
|
||||||
|
path to an asset when that asset is no a different drive than the main blend
|
||||||
|
file. If you still want Flamenco to copy such assets, there are two workarounds:
|
||||||
|
|
||||||
|
- Move your asset libraries to the same drive as your Blender projects.
|
||||||
|
- Use [symbolic links][symlinks-guide-windows] to make your assets available at
|
||||||
|
a suitable path.
|
||||||
|
|
||||||
|
[symlinks-guide-windows]: https://www.howtogeek.com/16226/complete-guide-to-symbolic-links-symlinks-on-windows-or-linux/
|
||||||
|
{{< /hint >}}
|
||||||
|
Loading…
Reference in New Issue
Block a user