Skip to content

Commit da77c62

Browse files
authored
Merge pull request #5480 from manyfold3d/show-render-derivatives
Show pre-rendered derivatives for models if available
2 parents e5d399a + ee2d321 commit da77c62

File tree

5 files changed

+18
-1
lines changed

5 files changed

+18
-1
lines changed

app/components/preview_frame.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ def render_local
3838
div class: "card-img-top #{"sensitive" if needs_hiding?}" do
3939
Renderer file: @file
4040
end
41+
elsif @file.has_render?
42+
image model_model_file_path(@file.model, @file, format: @file.extension, derivative: "render"), @file.name
4143
else
4244
empty
4345
end

app/components/renderer.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,14 @@ def render?
1414

1515
def before_template
1616
@settings = current_user&.renderer_settings || SiteSettings::UserDefaults::RENDERER
17+
@loading_bar_position_classes = @file.has_render? ?
18+
"btn-sm mt-3 translate-middle-x translate-top" :
19+
"top-50 translate-middle"
1720
end
1821

1922
def view_template
2023
div class: "position-relative", data: {turbo_permanent: true} do
24+
img src: model_model_file_path(@file.model, @file, format: @file.extension, derivative: :render), class: "card-img-top image-preview", alt: @file.name if @file.has_render?
2125
canvas id: "preview-file-#{@file.to_param}",
2226
class: "object-preview position-relative",
2327
tabindex: "0",
@@ -36,10 +40,12 @@ def view_template
3640
render_style: @settings["render_style"],
3741
auto_load: ((@file.size || 9_999_999.megabytes) < (@settings["auto_load_max_size"] || 9_999_999).megabytes) ? "true" : "false"
3842
}
39-
div class: "p-0 btn btn-secondary load-progress object-preview-progress position-absolute top-50 start-50 translate-middle", role: "presentation" do
43+
div class: "p-0 btn btn-secondary load-progress object-preview-progress position-absolute start-50 #{@loading_bar_position_classes}", role: "presentation" do
4044
div class: "progress-bar bg-info progress-bar-animated progress-bar-striped", role: "progressbar", style: "width: 0%; height: 100%",
4145
aria_label: "Loading progress", aria_valuenow: "0", aria_valuemin: "0", aria_valuemax: "100"
4246
span class: "progress-label position-absolute top-50 start-50 translate-middle", role: "button" do
47+
Icon icon: "box"
48+
whitespace
4349
span { t("renderer.load") }
4450
whitespace
4551
span { "(#{number_to_human_size @file.size, precision: 2})" }

app/models/model_file.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,10 @@ def is_renderable?
8383
["stl", "obj", "3mf", "ply", "gltf", "glb", "drc", "fbx", "3ds", "gcode", "mpd", "ldr", "3dm"].include? extension
8484
end
8585

86+
def has_render?
87+
is_3d_model? && attachment_attacher.derivatives.key?(:render)
88+
end
89+
8690
def mime_type
8791
Mime::Type.lookup_by_extension(extension)
8892
end

app/views/model_files/show.html.erb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
</ul>
4040
<% end %>
4141
<%= Renderer(file: @file) %>
42+
<% elsif @file.has_render? %>
43+
<%= image_tag model_model_file_path(@model, @file, format: @file.extension, derivative: "render"), style: "width: 100%", alt: @file.name %>
4244
<% end %>
4345
<% if @file.notes %>
4446
<%= card(:secondary, t(".notes_heading")) do %>

app/views/models/_file.html.erb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
<div class="card-img-top">
88
<%= Renderer(file: file) %>
99
</div>
10+
<% elsif file.has_render? %>
11+
<%= content_tag :div, nil, class: "card-img-top card-img-top-background", style: "background-image: url(#{model_model_file_path(@model, file, format: file.extension)})" %>
12+
<%= image_tag model_model_file_path(file.model, file, format: file.extension, derivative: "render"), class: "card-img-top image-preview", alt: file.name %>
1013
<% else %>
1114
<%= content_tag :div, nil, class: "card-img-top", style: "aspect-ratio: 1" do %>
1215
<svg height="100%" width="100%" viewBox="0 0 100 100">

0 commit comments

Comments
 (0)