diff --git a/README.md b/README.md index 70f9ec5..18433ca 100644 --- a/README.md +++ b/README.md @@ -214,6 +214,7 @@ This wrapper provides a comprehensive set of nodes to build 3D scenes. #### Animation - **RenderFormer Camera Target**: Creates a camera animation sequence by defining a start and end camera state (position, look-at, FOV). - **RenderFormer Lighting Target**: Creates a light animation sequence by defining a start and end light state (position, rotation, scale, and emission). +- **RenderFormer Mesh Target**: Creates a mesh animation sequence by defining a start and end state for a mesh's transformation (position, rotation, scale) and material properties (diffuse color, specular color, roughness). #### Utilities - **RenderFormer Mesh Combine**: Combines multiple `MESH` outputs into a single object list. @@ -254,7 +255,7 @@ This project is under active development. Here is a summary of the progress so f - [ ] **Animation Flickering:** Investigate and fix flickering in animations, especially for objects with highly reflective materials. - [ ] **Mesh Format Support:** Add support for loading `.glb` and `.fbx` files, including their materials and textures. -- [ ] **Mesh Animation:** Implement animation capabilities for `MESH` properties (translation, rotation, scale). +- [x] **Mesh Animation:** Implemented animation capabilities for `MESH` properties (translation, rotation, scale) and materials (diffuse, specular, roughness). - [ ] **Camera Adoption:** Integrate with the `Load 3D` core node to adopt its camera transformations. - [ ] **Material Presets:** Create a system for saving and loading material presets. - [ ] **Public Release:** Prepare for a more stable, public release with better documentation and examples. @@ -263,6 +264,12 @@ This project is under active development. Here is a summary of the progress so f ### 📜 Version History +#### Version 0.4.0 - Mesh Animation +- **Feature: Mesh & Material Animation:** A complete animation workflow for meshes has been implemented. +- **New Node: `RenderFormerMeshTarget`:** This new node allows you to define an animation for a mesh by specifying its end-state transformation (position, rotation, scale) and material properties (diffuse color, specular color, roughness). +- **Enhancement: `RenderFormerMeshCombine`:** This node has been upgraded to intelligently handle both static meshes and the new animated mesh sequences, allowing you to combine multiple animated and static objects in a scene. +- **Enhancement: `RenderFormerSceneBuilder`:** The scene builder now correctly processes the new mesh animation sequence, enabling it to generate interpolated frames for mesh animations just as it does for cameras and lights. + #### Version 0.3.35 - Bug Fixes & Stability - **Fix:** Resolved a critical `WrongTypeError` in the `RenderFormerRandomizeColors` node. The `random_diffuse_type` was being set to an incorrect string value (`"per triangle"`), which has now been corrected to the valid literal (`"per-triangle"`). - **Fix:** The `per-shading` mode in the `RenderFormerRandomizeColors` node has been updated to use the correct literal `"per-shading-group"` for consistency with the scene configuration, ensuring it functions as expected. diff --git a/__init__.py b/__init__.py index c49ea1c..4752ded 100644 --- a/__init__.py +++ b/__init__.py @@ -16,7 +16,7 @@ logo = fr""" {dark_yellow} __/ __ | / -_) \ _` | -_) _| _| _ \ _| ` \ -_) _|{reset} {dark_yellow} _| _| _| _|_\ \___| _| _| \__,_| \___| _| _| \___/ _| _|_|_| \___| _|{reset} -{dark_grey} -->> PH's RenderFormer Wrapper for ComfyUI Version: 0.3.35 <<--{reset} +{dark_grey} -->> PH's RenderFormer Wrapper for ComfyUI Version: 0.4.0 <<--{reset} """ print(logo) diff --git a/example_workflows/ph_renderformer_advanced_01.json b/example_workflows/ph_renderformer_advanced_01.json index 34bcdd9..95d7f55 100644 --- a/example_workflows/ph_renderformer_advanced_01.json +++ b/example_workflows/ph_renderformer_advanced_01.json @@ -1 +1 @@ -{"id":"25bb5802-368e-4959-a038-1333f1c4f36e","revision":0,"last_node_id":59,"last_link_id":105,"nodes":[{"id":10,"type":"RenderFormerModelLoader","pos":[950,1170],"size":[299.8785095214844,82],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"model_id","name":"model_id","type":"STRING","widget":{"name":"model_id"},"link":null},{"localized_name":"precision","name":"precision","type":"COMBO","widget":{"name":"precision"},"link":null}],"outputs":[{"localized_name":"MODEL","name":"MODEL","type":"MODEL","links":[55]}],"properties":{"Node name for S&R":"RenderFormerModelLoader","widget_ue_connectable":{}},"widgets_values":["microsoft/renderformer-v1.1-swin-large","fp32"],"color":"#FDC501","bgcolor":"#111417"},{"id":9,"type":"MarkdownNote","pos":[3190,970],"size":[760,120],"flags":{},"order":1,"mode":0,"inputs":[],"outputs":[],"properties":{"widget_ue_connectable":{}},"widgets_values":["# IV\n\n## Output\n\nEnjoy."],"color":"#222","bgcolor":"#000"},{"id":16,"type":"SaveImage","pos":[3190,1170],"size":[760,740],"flags":{},"order":26,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":88},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.42","Node name for S&R":"SaveImage","widget_ue_connectable":{}},"widgets_values":["RenderFormer"]},{"id":6,"type":"MarkdownNote","pos":[940,970],"size":[310,120],"flags":{},"order":2,"mode":0,"inputs":[],"outputs":[],"properties":{"widget_ue_connectable":{}},"widgets_values":["# I\n\n## Model Loaders\n\nLoad and use your favorit model and clip."],"color":"#222","bgcolor":"#000"},{"id":58,"type":"Load3D","pos":[1320,1170],"size":[300,600],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"model_file","name":"model_file","type":"COMBO","widget":{"name":"model_file"},"link":null},{"localized_name":"image","name":"image","type":"LOAD_3D","widget":{"name":"image"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null}],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":null},{"localized_name":"mask","name":"mask","type":"MASK","links":null},{"localized_name":"mesh_path","name":"mesh_path","type":"STRING","links":[103]},{"localized_name":"normal","name":"normal","type":"IMAGE","links":null},{"localized_name":"lineart","name":"lineart","type":"IMAGE","links":null},{"localized_name":"camera_info","name":"camera_info","type":"LOAD3D_CAMERA","links":null},{"localized_name":"recording_video","name":"recording_video","type":"VIDEO","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.42","Node name for S&R":"Load3D","widget_ue_connectable":{},"Camera Info":{"position":{"x":10,"y":2.074473455872055,"z":10.000000000000002},"target":{"x":0,"y":0.5186183639680135,"z":0},"zoom":1,"cameraType":"perspective"}},"widgets_values":["3d/phrenderformertest_00.obj","upload3dmodel","clear","",1024,1024]},{"id":45,"type":"RenderFormerMeshCombine","pos":[1940,1990],"size":[265.10205078125,166],"flags":{"collapsed":true},"order":22,"mode":0,"inputs":[{"localized_name":"mesh_1","name":"mesh_1","type":"MESH","link":64},{"localized_name":"mesh_2","name":"mesh_2","shape":7,"type":"MESH","link":65},{"localized_name":"mesh_3","name":"mesh_3","shape":7,"type":"MESH","link":66},{"localized_name":"mesh_4","name":"mesh_4","shape":7,"type":"MESH","link":67},{"localized_name":"mesh_5","name":"mesh_5","shape":7,"type":"MESH","link":null},{"localized_name":"mesh_6","name":"mesh_6","shape":7,"type":"MESH","link":null},{"localized_name":"mesh_7","name":"mesh_7","shape":7,"type":"MESH","link":null},{"localized_name":"mesh_8","name":"mesh_8","shape":7,"type":"MESH","link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[93]}],"properties":{"Node name for S&R":"RenderFormerMeshCombine","widget_ue_connectable":{}},"widgets_values":[],"color":"#FDC501","bgcolor":"#111417"},{"id":46,"type":"RenderFormerLoadMesh","pos":[1940,1950],"size":[216.53378295898438,54],"flags":{"collapsed":true},"order":4,"mode":0,"inputs":[{"localized_name":"material","name":"material","shape":7,"type":"MATERIAL","link":null},{"localized_name":"mesh","name":"mesh","type":"COMBO","widget":{"name":"mesh"},"link":null},{"localized_name":"mesh_path","name":"mesh_path","shape":7,"type":"STRING","widget":{"name":"mesh_path"},"link":null},{"localized_name":"normalize_mesh","name":"normalize_mesh","shape":7,"type":"BOOLEAN","widget":{"name":"normalize_mesh"},"link":null},{"localized_name":"trans_x","name":"trans_x","shape":7,"type":"FLOAT","widget":{"name":"trans_x"},"link":null},{"localized_name":"trans_y","name":"trans_y","shape":7,"type":"FLOAT","widget":{"name":"trans_y"},"link":null},{"localized_name":"trans_z","name":"trans_z","shape":7,"type":"FLOAT","widget":{"name":"trans_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","shape":7,"type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","shape":7,"type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","shape":7,"type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","shape":7,"type":"FLOAT","widget":{"name":"scale"},"link":null},{"localized_name":"diffuse_rgb","name":"diffuse_rgb","shape":7,"type":"STRING","widget":{"name":"diffuse_rgb"},"link":null},{"localized_name":"specular_rgb","name":"specular_rgb","shape":7,"type":"STRING","widget":{"name":"specular_rgb"},"link":null},{"localized_name":"roughness","name":"roughness","shape":7,"type":"FLOAT","widget":{"name":"roughness"},"link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[67]},{"localized_name":"MATERIAL","name":"MATERIAL","type":"MATERIAL","links":[]}],"properties":{"Node name for S&R":"RenderFormerLoadMesh","widget_ue_connectable":{}},"widgets_values":["phrenderformer_sphere_00.obj","",true,0.4400000000000001,-0.3480000000000001,-0.4000000000000001,0,0,0,0.10000000000000002,"255, 255, 255","0,0,0",0.05000000000000001,"image",null],"color":"#FDC501","bgcolor":"#111417"},{"id":44,"type":"RenderFormerLoadMesh","pos":[1940,1910],"size":[216.53378295898438,54],"flags":{"collapsed":true},"order":5,"mode":0,"inputs":[{"localized_name":"material","name":"material","shape":7,"type":"MATERIAL","link":null},{"localized_name":"mesh","name":"mesh","type":"COMBO","widget":{"name":"mesh"},"link":null},{"localized_name":"mesh_path","name":"mesh_path","shape":7,"type":"STRING","widget":{"name":"mesh_path"},"link":null},{"localized_name":"normalize_mesh","name":"normalize_mesh","shape":7,"type":"BOOLEAN","widget":{"name":"normalize_mesh"},"link":null},{"localized_name":"trans_x","name":"trans_x","shape":7,"type":"FLOAT","widget":{"name":"trans_x"},"link":null},{"localized_name":"trans_y","name":"trans_y","shape":7,"type":"FLOAT","widget":{"name":"trans_y"},"link":null},{"localized_name":"trans_z","name":"trans_z","shape":7,"type":"FLOAT","widget":{"name":"trans_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","shape":7,"type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","shape":7,"type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","shape":7,"type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","shape":7,"type":"FLOAT","widget":{"name":"scale"},"link":null},{"localized_name":"diffuse_rgb","name":"diffuse_rgb","shape":7,"type":"STRING","widget":{"name":"diffuse_rgb"},"link":null},{"localized_name":"specular_rgb","name":"specular_rgb","shape":7,"type":"STRING","widget":{"name":"specular_rgb"},"link":null},{"localized_name":"roughness","name":"roughness","shape":7,"type":"FLOAT","widget":{"name":"roughness"},"link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[66]},{"localized_name":"MATERIAL","name":"MATERIAL","type":"MATERIAL","links":[]}],"properties":{"Node name for S&R":"RenderFormerLoadMesh","widget_ue_connectable":{}},"widgets_values":["phrenderformer_sphere_00.obj","",true,0.32000000000000006,-0.3480000000000001,-0.4000000000000001,0,0,0,0.10000000000000002,"0, 0, 0","255,255,255",0.05000000000000001,"image",null],"color":"#FDC501","bgcolor":"#111417"},{"id":43,"type":"RenderFormerLoadMesh","pos":[1940,1870],"size":[216.53378295898438,54],"flags":{"collapsed":true},"order":21,"mode":0,"inputs":[{"localized_name":"material","name":"material","shape":7,"type":"MATERIAL","link":76},{"localized_name":"mesh","name":"mesh","type":"COMBO","widget":{"name":"mesh"},"link":null},{"localized_name":"mesh_path","name":"mesh_path","shape":7,"type":"STRING","widget":{"name":"mesh_path"},"link":null},{"localized_name":"normalize_mesh","name":"normalize_mesh","shape":7,"type":"BOOLEAN","widget":{"name":"normalize_mesh"},"link":null},{"localized_name":"trans_x","name":"trans_x","shape":7,"type":"FLOAT","widget":{"name":"trans_x"},"link":null},{"localized_name":"trans_y","name":"trans_y","shape":7,"type":"FLOAT","widget":{"name":"trans_y"},"link":null},{"localized_name":"trans_z","name":"trans_z","shape":7,"type":"FLOAT","widget":{"name":"trans_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","shape":7,"type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","shape":7,"type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","shape":7,"type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","shape":7,"type":"FLOAT","widget":{"name":"scale"},"link":null},{"localized_name":"diffuse_rgb","name":"diffuse_rgb","shape":7,"type":"STRING","widget":{"name":"diffuse_rgb"},"link":null},{"localized_name":"specular_rgb","name":"specular_rgb","shape":7,"type":"STRING","widget":{"name":"specular_rgb"},"link":null},{"localized_name":"roughness","name":"roughness","shape":7,"type":"FLOAT","widget":{"name":"roughness"},"link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[65]},{"localized_name":"MATERIAL","name":"MATERIAL","type":"MATERIAL","links":[]}],"properties":{"Node name for S&R":"RenderFormerLoadMesh","widget_ue_connectable":{}},"widgets_values":["phrenderformer_sphere_00.obj","",true,0.20000000000000004,-0.3480000000000001,-0.4000000000000001,0,0,0,0.10000000000000002,"255, 255, 255","10,10,10",0.05000000000000001,"image",null],"color":"#FDC501","bgcolor":"#111417"},{"id":48,"type":"RenderFormerMeshCombine","pos":[1680,1990],"size":[266.2938537597656,166],"flags":{"collapsed":true},"order":18,"mode":0,"inputs":[{"localized_name":"mesh_1","name":"mesh_1","type":"MESH","link":68},{"localized_name":"mesh_2","name":"mesh_2","shape":7,"type":"MESH","link":99},{"localized_name":"mesh_3","name":"mesh_3","shape":7,"type":"MESH","link":98},{"localized_name":"mesh_4","name":"mesh_4","shape":7,"type":"MESH","link":71},{"localized_name":"mesh_5","name":"mesh_5","shape":7,"type":"MESH","link":null},{"localized_name":"mesh_6","name":"mesh_6","shape":7,"type":"MESH","link":null},{"localized_name":"mesh_7","name":"mesh_7","shape":7,"type":"MESH","link":null},{"localized_name":"mesh_8","name":"mesh_8","shape":7,"type":"MESH","link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[94]}],"properties":{"Node name for S&R":"RenderFormerMeshCombine","widget_ue_connectable":{}},"widgets_values":[],"color":"#FDC501","bgcolor":"#111417"},{"id":51,"type":"RenderFormerLoadMesh","pos":[1680,1950],"size":[216.53378295898438,54],"flags":{"collapsed":true},"order":6,"mode":0,"inputs":[{"localized_name":"material","name":"material","shape":7,"type":"MATERIAL","link":null},{"localized_name":"mesh","name":"mesh","type":"COMBO","widget":{"name":"mesh"},"link":null},{"localized_name":"mesh_path","name":"mesh_path","shape":7,"type":"STRING","widget":{"name":"mesh_path"},"link":null},{"localized_name":"normalize_mesh","name":"normalize_mesh","shape":7,"type":"BOOLEAN","widget":{"name":"normalize_mesh"},"link":null},{"localized_name":"trans_x","name":"trans_x","shape":7,"type":"FLOAT","widget":{"name":"trans_x"},"link":null},{"localized_name":"trans_y","name":"trans_y","shape":7,"type":"FLOAT","widget":{"name":"trans_y"},"link":null},{"localized_name":"trans_z","name":"trans_z","shape":7,"type":"FLOAT","widget":{"name":"trans_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","shape":7,"type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","shape":7,"type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","shape":7,"type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","shape":7,"type":"FLOAT","widget":{"name":"scale"},"link":null},{"localized_name":"diffuse_rgb","name":"diffuse_rgb","shape":7,"type":"STRING","widget":{"name":"diffuse_rgb"},"link":null},{"localized_name":"specular_rgb","name":"specular_rgb","shape":7,"type":"STRING","widget":{"name":"specular_rgb"},"link":null},{"localized_name":"roughness","name":"roughness","shape":7,"type":"FLOAT","widget":{"name":"roughness"},"link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[71]},{"localized_name":"MATERIAL","name":"MATERIAL","type":"MATERIAL","links":null}],"properties":{"Node name for S&R":"RenderFormerLoadMesh","widget_ue_connectable":{}},"widgets_values":["plane.obj","",true,0,0,0,0,0,0,1,"204, 204, 204","25, 25, 25",0.7,"image",null],"color":"#FDC501","bgcolor":"#111417"},{"id":56,"type":"RenderFormerLoadMesh","pos":[1680,1910],"size":[216.53378295898438,54],"flags":{"collapsed":true},"order":7,"mode":0,"inputs":[{"localized_name":"material","name":"material","shape":7,"type":"MATERIAL","link":null},{"localized_name":"mesh","name":"mesh","type":"COMBO","widget":{"name":"mesh"},"link":null},{"localized_name":"mesh_path","name":"mesh_path","shape":7,"type":"STRING","widget":{"name":"mesh_path"},"link":null},{"localized_name":"normalize_mesh","name":"normalize_mesh","shape":7,"type":"BOOLEAN","widget":{"name":"normalize_mesh"},"link":null},{"localized_name":"trans_x","name":"trans_x","shape":7,"type":"FLOAT","widget":{"name":"trans_x"},"link":null},{"localized_name":"trans_y","name":"trans_y","shape":7,"type":"FLOAT","widget":{"name":"trans_y"},"link":null},{"localized_name":"trans_z","name":"trans_z","shape":7,"type":"FLOAT","widget":{"name":"trans_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","shape":7,"type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","shape":7,"type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","shape":7,"type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","shape":7,"type":"FLOAT","widget":{"name":"scale"},"link":null},{"localized_name":"diffuse_rgb","name":"diffuse_rgb","shape":7,"type":"STRING","widget":{"name":"diffuse_rgb"},"link":null},{"localized_name":"specular_rgb","name":"specular_rgb","shape":7,"type":"STRING","widget":{"name":"specular_rgb"},"link":null},{"localized_name":"roughness","name":"roughness","shape":7,"type":"FLOAT","widget":{"name":"roughness"},"link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[98]},{"localized_name":"MATERIAL","name":"MATERIAL","type":"MATERIAL","links":null}],"properties":{"Node name for S&R":"RenderFormerLoadMesh","widget_ue_connectable":{}},"widgets_values":["wall2.obj","",true,0,0,0,0,0,0,1,"255, 0, 0","0,0,0",0,"image",null],"color":"#FDC501","bgcolor":"#111417"},{"id":57,"type":"RenderFormerLoadMesh","pos":[1680,1870],"size":[216.53378295898438,54],"flags":{"collapsed":true},"order":8,"mode":0,"inputs":[{"localized_name":"material","name":"material","shape":7,"type":"MATERIAL","link":null},{"localized_name":"mesh","name":"mesh","type":"COMBO","widget":{"name":"mesh"},"link":null},{"localized_name":"mesh_path","name":"mesh_path","shape":7,"type":"STRING","widget":{"name":"mesh_path"},"link":null},{"localized_name":"normalize_mesh","name":"normalize_mesh","shape":7,"type":"BOOLEAN","widget":{"name":"normalize_mesh"},"link":null},{"localized_name":"trans_x","name":"trans_x","shape":7,"type":"FLOAT","widget":{"name":"trans_x"},"link":null},{"localized_name":"trans_y","name":"trans_y","shape":7,"type":"FLOAT","widget":{"name":"trans_y"},"link":null},{"localized_name":"trans_z","name":"trans_z","shape":7,"type":"FLOAT","widget":{"name":"trans_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","shape":7,"type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","shape":7,"type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","shape":7,"type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","shape":7,"type":"FLOAT","widget":{"name":"scale"},"link":null},{"localized_name":"diffuse_rgb","name":"diffuse_rgb","shape":7,"type":"STRING","widget":{"name":"diffuse_rgb"},"link":null},{"localized_name":"specular_rgb","name":"specular_rgb","shape":7,"type":"STRING","widget":{"name":"specular_rgb"},"link":null},{"localized_name":"roughness","name":"roughness","shape":7,"type":"FLOAT","widget":{"name":"roughness"},"link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[99]},{"localized_name":"MATERIAL","name":"MATERIAL","type":"MATERIAL","links":[]}],"properties":{"Node name for S&R":"RenderFormerLoadMesh","widget_ue_connectable":{}},"widgets_values":["wall1.obj","",true,0,0,0,0,0,0,1,"0, 135, 184","0,0,0",1,"image",null],"color":"#FDC501","bgcolor":"#111417"},{"id":53,"type":"RenderFormerLoadMesh","pos":[1680,1830],"size":[216.53378295898438,54],"flags":{"collapsed":true},"order":9,"mode":0,"inputs":[{"localized_name":"material","name":"material","shape":7,"type":"MATERIAL","link":null},{"localized_name":"mesh","name":"mesh","type":"COMBO","widget":{"name":"mesh"},"link":null},{"localized_name":"mesh_path","name":"mesh_path","shape":7,"type":"STRING","widget":{"name":"mesh_path"},"link":null},{"localized_name":"normalize_mesh","name":"normalize_mesh","shape":7,"type":"BOOLEAN","widget":{"name":"normalize_mesh"},"link":null},{"localized_name":"trans_x","name":"trans_x","shape":7,"type":"FLOAT","widget":{"name":"trans_x"},"link":null},{"localized_name":"trans_y","name":"trans_y","shape":7,"type":"FLOAT","widget":{"name":"trans_y"},"link":null},{"localized_name":"trans_z","name":"trans_z","shape":7,"type":"FLOAT","widget":{"name":"trans_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","shape":7,"type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","shape":7,"type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","shape":7,"type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","shape":7,"type":"FLOAT","widget":{"name":"scale"},"link":null},{"localized_name":"diffuse_rgb","name":"diffuse_rgb","shape":7,"type":"STRING","widget":{"name":"diffuse_rgb"},"link":null},{"localized_name":"specular_rgb","name":"specular_rgb","shape":7,"type":"STRING","widget":{"name":"specular_rgb"},"link":null},{"localized_name":"roughness","name":"roughness","shape":7,"type":"FLOAT","widget":{"name":"roughness"},"link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[68]},{"localized_name":"MATERIAL","name":"MATERIAL","type":"MATERIAL","links":null}],"properties":{"Node name for S&R":"RenderFormerLoadMesh","widget_ue_connectable":{}},"widgets_values":["wall0.obj","",true,0,0,0,0,0,0,1,"0, 0, 0","250,250,250",0.08000000000000002,"image",null],"color":"#FDC501","bgcolor":"#111417"},{"id":47,"type":"RenderFormerLoadMesh","pos":[1940,1830],"size":[216.53378295898438,54],"flags":{"collapsed":true},"order":10,"mode":0,"inputs":[{"localized_name":"material","name":"material","shape":7,"type":"MATERIAL","link":null},{"localized_name":"mesh","name":"mesh","type":"COMBO","widget":{"name":"mesh"},"link":null},{"localized_name":"mesh_path","name":"mesh_path","shape":7,"type":"STRING","widget":{"name":"mesh_path"},"link":null},{"localized_name":"normalize_mesh","name":"normalize_mesh","shape":7,"type":"BOOLEAN","widget":{"name":"normalize_mesh"},"link":null},{"localized_name":"trans_x","name":"trans_x","shape":7,"type":"FLOAT","widget":{"name":"trans_x"},"link":null},{"localized_name":"trans_y","name":"trans_y","shape":7,"type":"FLOAT","widget":{"name":"trans_y"},"link":null},{"localized_name":"trans_z","name":"trans_z","shape":7,"type":"FLOAT","widget":{"name":"trans_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","shape":7,"type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","shape":7,"type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","shape":7,"type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","shape":7,"type":"FLOAT","widget":{"name":"scale"},"link":null},{"localized_name":"diffuse_rgb","name":"diffuse_rgb","shape":7,"type":"STRING","widget":{"name":"diffuse_rgb"},"link":null},{"localized_name":"specular_rgb","name":"specular_rgb","shape":7,"type":"STRING","widget":{"name":"specular_rgb"},"link":null},{"localized_name":"roughness","name":"roughness","shape":7,"type":"FLOAT","widget":{"name":"roughness"},"link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[64]},{"localized_name":"MATERIAL","name":"MATERIAL","type":"MATERIAL","links":[]}],"properties":{"Node name for S&R":"RenderFormerLoadMesh","widget_ue_connectable":{}},"widgets_values":["phrenderformer_sphere_00.obj","",true,0.08000000000000002,-0.3480000000000001,-0.4000000000000001,0,0,0,0.10000000000000002,"0, 0, 0","10,10,10",0.05000000000000001,"image",null],"color":"#FDC501","bgcolor":"#111417"},{"id":20,"type":"RenderFormerMeshCombine","pos":[2210,1830],"size":[228.96835327148438,170],"flags":{},"order":23,"mode":0,"inputs":[{"localized_name":"mesh_1","name":"mesh_1","type":"MESH","link":90},{"localized_name":"mesh_2","name":"mesh_2","shape":7,"type":"MESH","link":91},{"localized_name":"mesh_3","name":"mesh_3","shape":7,"type":"MESH","link":92},{"localized_name":"mesh_4","name":"mesh_4","shape":7,"type":"MESH","link":93},{"localized_name":"mesh_5","name":"mesh_5","shape":7,"type":"MESH","link":94},{"localized_name":"mesh_6","name":"mesh_6","shape":7,"type":"MESH","link":null},{"localized_name":"mesh_7","name":"mesh_7","shape":7,"type":"MESH","link":null},{"localized_name":"mesh_8","name":"mesh_8","shape":7,"type":"MESH","link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[33]}],"properties":{"Node name for S&R":"RenderFormerMeshCombine","widget_ue_connectable":{}},"widgets_values":[],"color":"#FDC501","bgcolor":"#111417"},{"id":34,"type":"CreateVideo","pos":[2830,2080],"size":[290,80],"flags":{},"order":27,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":102},{"localized_name":"audio","name":"audio","shape":7,"type":"AUDIO","link":null},{"localized_name":"fps","name":"fps","type":"FLOAT","widget":{"name":"fps"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[63]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.42","Node name for S&R":"CreateVideo","widget_ue_connectable":{}},"widgets_values":[24]},{"id":32,"type":"RenderFormerCameraTarget","pos":[2830,1170],"size":[290,230],"flags":{},"order":19,"mode":0,"inputs":[{"localized_name":"start_camera","name":"start_camera","type":"CAMERA","link":96},{"localized_name":"end_pos_x","name":"end_pos_x","type":"FLOAT","widget":{"name":"end_pos_x"},"link":null},{"localized_name":"end_pos_y","name":"end_pos_y","type":"FLOAT","widget":{"name":"end_pos_y"},"link":null},{"localized_name":"end_pos_z","name":"end_pos_z","type":"FLOAT","widget":{"name":"end_pos_z"},"link":null},{"localized_name":"end_look_at_x","name":"end_look_at_x","type":"FLOAT","widget":{"name":"end_look_at_x"},"link":null},{"localized_name":"end_look_at_y","name":"end_look_at_y","type":"FLOAT","widget":{"name":"end_look_at_y"},"link":null},{"localized_name":"end_look_at_z","name":"end_look_at_z","type":"FLOAT","widget":{"name":"end_look_at_z"},"link":null},{"localized_name":"end_fov","name":"end_fov","type":"FLOAT","widget":{"name":"end_fov"},"link":null}],"outputs":[{"localized_name":"CAMERA_SEQUENCE","name":"CAMERA_SEQUENCE","type":"CAMERA_SEQUENCE","links":[80]}],"properties":{"Node name for S&R":"RenderFormerCameraTarget","widget_ue_connectable":{}},"widgets_values":[0,-0.8000000000000002,0,0,0,0,37.5],"color":"#FDC501","bgcolor":"#111417"},{"id":28,"type":"RenderFormerLoadMesh","pos":[1670,1170],"size":[216.53378295898438,589],"flags":{"collapsed":false},"order":17,"mode":0,"inputs":[{"localized_name":"material","name":"material","shape":7,"type":"MATERIAL","link":null},{"localized_name":"mesh","name":"mesh","type":"COMBO","widget":{"name":"mesh"},"link":null},{"localized_name":"mesh_path","name":"mesh_path","shape":7,"type":"STRING","widget":{"name":"mesh_path"},"link":103},{"localized_name":"normalize_mesh","name":"normalize_mesh","shape":7,"type":"BOOLEAN","widget":{"name":"normalize_mesh"},"link":null},{"localized_name":"trans_x","name":"trans_x","shape":7,"type":"FLOAT","widget":{"name":"trans_x"},"link":null},{"localized_name":"trans_y","name":"trans_y","shape":7,"type":"FLOAT","widget":{"name":"trans_y"},"link":null},{"localized_name":"trans_z","name":"trans_z","shape":7,"type":"FLOAT","widget":{"name":"trans_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","shape":7,"type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","shape":7,"type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","shape":7,"type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","shape":7,"type":"FLOAT","widget":{"name":"scale"},"link":null},{"localized_name":"diffuse_rgb","name":"diffuse_rgb","shape":7,"type":"STRING","widget":{"name":"diffuse_rgb"},"link":null},{"localized_name":"specular_rgb","name":"specular_rgb","shape":7,"type":"STRING","widget":{"name":"specular_rgb"},"link":null},{"localized_name":"roughness","name":"roughness","shape":7,"type":"FLOAT","widget":{"name":"roughness"},"link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[90]},{"localized_name":"MATERIAL","name":"MATERIAL","type":"MATERIAL","links":[76]}],"properties":{"Node name for S&R":"RenderFormerLoadMesh","widget_ue_connectable":{}},"widgets_values":["bunny.obj","",true,0,0,0.19700000000000004,0,18.5,142.8,1,"223, 168, 0","25, 25, 25",0.7,"image",null],"color":"#FDC501","bgcolor":"#111417"},{"id":17,"type":"RenderFormerLoadMesh","pos":[1940,1170],"size":[216.53378295898438,589],"flags":{"collapsed":false},"order":11,"mode":0,"inputs":[{"localized_name":"material","name":"material","shape":7,"type":"MATERIAL","link":null},{"localized_name":"mesh","name":"mesh","type":"COMBO","widget":{"name":"mesh"},"link":null},{"localized_name":"mesh_path","name":"mesh_path","shape":7,"type":"STRING","widget":{"name":"mesh_path"},"link":null},{"localized_name":"normalize_mesh","name":"normalize_mesh","shape":7,"type":"BOOLEAN","widget":{"name":"normalize_mesh"},"link":null},{"localized_name":"trans_x","name":"trans_x","shape":7,"type":"FLOAT","widget":{"name":"trans_x"},"link":null},{"localized_name":"trans_y","name":"trans_y","shape":7,"type":"FLOAT","widget":{"name":"trans_y"},"link":null},{"localized_name":"trans_z","name":"trans_z","shape":7,"type":"FLOAT","widget":{"name":"trans_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","shape":7,"type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","shape":7,"type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","shape":7,"type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","shape":7,"type":"FLOAT","widget":{"name":"scale"},"link":null},{"localized_name":"diffuse_rgb","name":"diffuse_rgb","shape":7,"type":"STRING","widget":{"name":"diffuse_rgb"},"link":null},{"localized_name":"specular_rgb","name":"specular_rgb","shape":7,"type":"STRING","widget":{"name":"specular_rgb"},"link":null},{"localized_name":"roughness","name":"roughness","shape":7,"type":"FLOAT","widget":{"name":"roughness"},"link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[91]},{"localized_name":"MATERIAL","name":"MATERIAL","type":"MATERIAL","links":[]}],"properties":{"Node name for S&R":"RenderFormerLoadMesh","widget_ue_connectable":{}},"widgets_values":["fox.obj","",true,0,0,-0.32400000000000007,0,0,-79.80000000000001,1,"0, 0, 0","100,100,100",0,"image",null],"color":"#FDC501","bgcolor":"#111417"},{"id":52,"type":"RenderFormerLoadMesh","pos":[2210,1170],"size":[216.53378295898438,589],"flags":{"collapsed":false},"order":12,"mode":0,"inputs":[{"localized_name":"material","name":"material","shape":7,"type":"MATERIAL","link":null},{"localized_name":"mesh","name":"mesh","type":"COMBO","widget":{"name":"mesh"},"link":null},{"localized_name":"mesh_path","name":"mesh_path","shape":7,"type":"STRING","widget":{"name":"mesh_path"},"link":null},{"localized_name":"normalize_mesh","name":"normalize_mesh","shape":7,"type":"BOOLEAN","widget":{"name":"normalize_mesh"},"link":null},{"localized_name":"trans_x","name":"trans_x","shape":7,"type":"FLOAT","widget":{"name":"trans_x"},"link":null},{"localized_name":"trans_y","name":"trans_y","shape":7,"type":"FLOAT","widget":{"name":"trans_y"},"link":null},{"localized_name":"trans_z","name":"trans_z","shape":7,"type":"FLOAT","widget":{"name":"trans_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","shape":7,"type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","shape":7,"type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","shape":7,"type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","shape":7,"type":"FLOAT","widget":{"name":"scale"},"link":null},{"localized_name":"diffuse_rgb","name":"diffuse_rgb","shape":7,"type":"STRING","widget":{"name":"diffuse_rgb"},"link":null},{"localized_name":"specular_rgb","name":"specular_rgb","shape":7,"type":"STRING","widget":{"name":"specular_rgb"},"link":null},{"localized_name":"roughness","name":"roughness","shape":7,"type":"FLOAT","widget":{"name":"roughness"},"link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[92]},{"localized_name":"MATERIAL","name":"MATERIAL","type":"MATERIAL","links":[]}],"properties":{"Node name for S&R":"RenderFormerLoadMesh","widget_ue_connectable":{}},"widgets_values":["phrenderformer_sphere_00.obj","",true,0.31000000000000005,0,-0.3600000000000001,0,0,0,0.30000000000000004,"5, 147, 23","10,10,10",0,"image",null],"color":"#FDC501","bgcolor":"#111417"},{"id":55,"type":"RenderFormerCamera","pos":[2490,1170],"size":[270,202],"flags":{},"order":13,"mode":0,"inputs":[{"localized_name":"camera_pos_x","name":"camera_pos_x","type":"FLOAT","widget":{"name":"camera_pos_x"},"link":null},{"localized_name":"camera_pos_y","name":"camera_pos_y","type":"FLOAT","widget":{"name":"camera_pos_y"},"link":null},{"localized_name":"camera_pos_z","name":"camera_pos_z","type":"FLOAT","widget":{"name":"camera_pos_z"},"link":null},{"localized_name":"camera_look_at_x","name":"camera_look_at_x","type":"FLOAT","widget":{"name":"camera_look_at_x"},"link":null},{"localized_name":"camera_look_at_y","name":"camera_look_at_y","type":"FLOAT","widget":{"name":"camera_look_at_y"},"link":null},{"localized_name":"camera_look_at_z","name":"camera_look_at_z","type":"FLOAT","widget":{"name":"camera_look_at_z"},"link":null},{"localized_name":"fov","name":"fov","type":"FLOAT","widget":{"name":"fov"},"link":null}],"outputs":[{"localized_name":"CAMERA","name":"CAMERA","type":"CAMERA","links":[95,96]}],"properties":{"Node name for S&R":"RenderFormerCamera","widget_ue_connectable":{}},"widgets_values":[0,-2,0,0,0,0,37.5],"color":"#FDC501","bgcolor":"#111417"},{"id":7,"type":"MarkdownNote","pos":[1320,970],"size":[1440,120],"flags":{},"order":14,"mode":0,"inputs":[],"outputs":[],"properties":{"widget_ue_connectable":{}},"widgets_values":["# II\n\n## Inputs\n\nYour 3d models goes here. Define Materials per Mesh Loader or Overwrite anothers Mesh Loader by using the *MATERIAL* in-/output."],"color":"#222","bgcolor":"#000"},{"id":8,"type":"MarkdownNote","pos":[2830,970],"size":[290,120],"flags":{},"order":15,"mode":0,"inputs":[],"outputs":[],"properties":{"widget_ue_connectable":{}},"widgets_values":["# III\n\n## Config & Processing\n\nConfiguration settings for sampling."],"color":"#222","bgcolor":"#000"},{"id":42,"type":"SaveVideo","pos":[3190,1990],"size":[864,962],"flags":{},"order":28,"mode":0,"inputs":[{"localized_name":"video","name":"video","type":"VIDEO","link":63},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null},{"localized_name":"format","name":"format","type":"COMBO","widget":{"name":"format"},"link":null},{"localized_name":"codec","name":"codec","type":"COMBO","widget":{"name":"codec"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.42","Node name for S&R":"SaveVideo","widget_ue_connectable":{}},"widgets_values":["video/ComfyUI","auto","auto"]},{"id":54,"type":"RenderFormerLighting","pos":[2490,1440],"size":[270,250],"flags":{},"order":16,"mode":0,"inputs":[{"localized_name":"emissive_rgb","name":"emissive_rgb","type":"STRING","widget":{"name":"emissive_rgb"},"link":null},{"localized_name":"emissive_strength","name":"emissive_strength","type":"FLOAT","widget":{"name":"emissive_strength"},"link":null},{"localized_name":"trans_x","name":"trans_x","type":"FLOAT","widget":{"name":"trans_x"},"link":null},{"localized_name":"trans_y","name":"trans_y","type":"FLOAT","widget":{"name":"trans_y"},"link":null},{"localized_name":"trans_z","name":"trans_z","type":"FLOAT","widget":{"name":"trans_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","type":"FLOAT","widget":{"name":"scale"},"link":null}],"outputs":[{"localized_name":"LIGHTING","name":"LIGHTING","type":"LIGHTING","links":[89,104]}],"properties":{"Node name for S&R":"RenderFormerLighting","widget_ue_connectable":{}},"widgets_values":["255, 255, 255",3000,0,0,2.1,0,0,0,2.5],"color":"#FDC501","bgcolor":"#111417"},{"id":38,"type":"RenderFormerGenerator","pos":[2830,1870],"size":[290,146],"flags":{},"order":25,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":55},{"localized_name":"scene","name":"scene","shape":7,"type":"SCENE","link":87},{"localized_name":"scene_sequence","name":"scene_sequence","shape":7,"type":"SCENE_SEQUENCE","link":101},{"localized_name":"resolution","name":"resolution","type":"INT","widget":{"name":"resolution"},"link":null},{"localized_name":"tone_mapper","name":"tone_mapper","type":"COMBO","widget":{"name":"tone_mapper"},"link":null},{"localized_name":"resolution_vid","name":"resolution_vid","shape":7,"type":"INT","widget":{"name":"resolution_vid"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[88]},{"localized_name":"IMAGES","name":"IMAGES","type":"IMAGE","links":[102]}],"properties":{"Node name for S&R":"RenderFormerGenerator","widget_ue_connectable":{}},"widgets_values":[512,"agx",512],"color":"#FDC501","bgcolor":"#111417"},{"id":59,"type":"RenderFormerLightingTarget","pos":[2830,1460],"size":[290,130],"flags":{},"order":20,"mode":0,"inputs":[{"localized_name":"start_lighting","name":"start_lighting","type":"LIGHTING","link":104},{"localized_name":"end_pos_x","name":"end_pos_x","type":"FLOAT","widget":{"name":"end_pos_x"},"link":null},{"localized_name":"end_pos_y","name":"end_pos_y","type":"FLOAT","widget":{"name":"end_pos_y"},"link":null},{"localized_name":"end_pos_z","name":"end_pos_z","type":"FLOAT","widget":{"name":"end_pos_z"},"link":null},{"localized_name":"end_emissive_strength","name":"end_emissive_strength","type":"FLOAT","widget":{"name":"end_emissive_strength"},"link":null}],"outputs":[{"localized_name":"LIGHTING_SEQUENCE","name":"LIGHTING_SEQUENCE","type":"LIGHTING_SEQUENCE","links":[105]}],"properties":{"widget_ue_connectable":{},"Node name for S&R":"RenderFormerLightingTarget"},"widgets_values":[-1.2100000000000002,0,2.1,5000],"color":"#FDC501","bgcolor":"#111417"},{"id":29,"type":"RenderFormerSceneBuilder","pos":[2830,1650],"size":[290,162],"flags":{},"order":24,"mode":0,"inputs":[{"localized_name":"mesh","name":"mesh","type":"MESH","link":33},{"localized_name":"lighting","name":"lighting","type":"LIGHTING","link":89},{"localized_name":"camera","name":"camera","type":"CAMERA","link":95},{"localized_name":"camera_sequence","name":"camera_sequence","shape":7,"type":"CAMERA_SEQUENCE","link":80},{"localized_name":"lighting_sequence","name":"lighting_sequence","shape":7,"type":"LIGHTING_SEQUENCE","link":105},{"localized_name":"num_frames","name":"num_frames","shape":7,"type":"INT","widget":{"name":"num_frames"},"link":null},{"localized_name":"add_default_background","name":"add_default_background","shape":7,"type":"BOOLEAN","widget":{"name":"add_default_background"},"link":null}],"outputs":[{"localized_name":"SCENE","name":"SCENE","type":"SCENE","links":[87]},{"localized_name":"SCENE_SEQUENCE","name":"SCENE_SEQUENCE","type":"SCENE_SEQUENCE","links":[101]}],"properties":{"Node name for S&R":"RenderFormerSceneBuilder","widget_ue_connectable":{}},"widgets_values":[24,false],"color":"#FDC501","bgcolor":"#111417"}],"links":[[33,20,0,29,0,"MESH"],[55,10,0,38,0,"MODEL"],[63,34,0,42,0,"VIDEO"],[64,47,0,45,0,"MESH"],[65,43,0,45,1,"MESH"],[66,44,0,45,2,"MESH"],[67,46,0,45,3,"MESH"],[68,53,0,48,0,"MESH"],[71,51,0,48,3,"MESH"],[76,28,1,43,0,"MATERIAL"],[80,32,0,29,3,"CAMERA_SEQUENCE"],[87,29,0,38,1,"SCENE"],[88,38,0,16,0,"IMAGE"],[89,54,0,29,1,"LIGHTING"],[90,28,0,20,0,"MESH"],[91,17,0,20,1,"MESH"],[92,52,0,20,2,"MESH"],[93,45,0,20,3,"MESH"],[94,48,0,20,4,"MESH"],[95,55,0,29,2,"CAMERA"],[96,55,0,32,0,"CAMERA"],[98,56,0,48,2,"MESH"],[99,57,0,48,1,"MESH"],[101,29,1,38,2,"SCENE_SEQUENCE"],[102,38,1,34,0,"IMAGE"],[103,58,2,28,2,"STRING"],[104,54,0,59,0,"LIGHTING"],[105,59,0,29,4,"LIGHTING_SEQUENCE"]],"groups":[],"config":{},"extra":{"ue_links":[],"ds":{"scale":0.8669438814834032,"offset":[-1835.033727326927,-1324.5199475137933]},"links_added_by_ue":[]},"version":0.4} \ No newline at end of file +{"id":"25bb5802-368e-4959-a038-1333f1c4f36e","revision":0,"last_node_id":70,"last_link_id":129,"nodes":[{"id":16,"type":"SaveImage","pos":[3550,1170],"size":[760,740],"flags":{},"order":30,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":88},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.42","Node name for S&R":"SaveImage","widget_ue_connectable":{}},"widgets_values":["RenderFormer"]},{"id":6,"type":"MarkdownNote","pos":[940,970],"size":[310,120],"flags":{},"order":0,"mode":0,"inputs":[],"outputs":[],"properties":{"widget_ue_connectable":{}},"widgets_values":["# I\n\n## Model Loaders\n\nLoad and use your favorit model and clip."],"color":"#222","bgcolor":"#000"},{"id":58,"type":"Load3D","pos":[1320,1170],"size":[300,600],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"model_file","name":"model_file","type":"COMBO","widget":{"name":"model_file"},"link":null},{"localized_name":"image","name":"image","type":"LOAD_3D","widget":{"name":"image"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null}],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":null},{"localized_name":"mask","name":"mask","type":"MASK","links":null},{"localized_name":"mesh_path","name":"mesh_path","type":"STRING","links":[103]},{"localized_name":"normal","name":"normal","type":"IMAGE","links":null},{"localized_name":"lineart","name":"lineart","type":"IMAGE","links":null},{"localized_name":"camera_info","name":"camera_info","type":"LOAD3D_CAMERA","links":null},{"localized_name":"recording_video","name":"recording_video","type":"VIDEO","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.42","Node name for S&R":"Load3D","widget_ue_connectable":{},"Camera Info":{"position":{"x":10,"y":2.074473455872055,"z":10.000000000000002},"target":{"x":0,"y":0.5186183639680135,"z":0},"zoom":1,"cameraType":"perspective"}},"widgets_values":["3d/phrenderformertest_00.obj","upload3dmodel","clear","",1024,1024]},{"id":45,"type":"RenderFormerMeshCombine","pos":[1940,1990],"size":[265.10205078125,166],"flags":{"collapsed":true},"order":26,"mode":0,"inputs":[{"localized_name":"mesh_1","name":"mesh_1","type":"MESH","link":64},{"localized_name":"mesh_2","name":"mesh_2","shape":7,"type":"MESH","link":65},{"localized_name":"mesh_3","name":"mesh_3","shape":7,"type":"MESH","link":66},{"localized_name":"mesh_4","name":"mesh_4","shape":7,"type":"MESH","link":67},{"localized_name":"mesh_5","name":"mesh_5","shape":7,"type":"MESH","link":null},{"localized_name":"mesh_6","name":"mesh_6","shape":7,"type":"MESH","link":null},{"localized_name":"mesh_7","name":"mesh_7","shape":7,"type":"MESH","link":null},{"localized_name":"mesh_8","name":"mesh_8","shape":7,"type":"MESH","link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[93]},{"localized_name":"MESH_SEQUENCE","name":"MESH_SEQUENCE","type":"MESH_SEQUENCE","links":null}],"properties":{"Node name for S&R":"RenderFormerMeshCombine","widget_ue_connectable":{}},"widgets_values":[],"color":"#FDC501","bgcolor":"#111417"},{"id":46,"type":"RenderFormerLoadMesh","pos":[1940,1950],"size":[216.53378295898438,54],"flags":{"collapsed":true},"order":2,"mode":0,"inputs":[{"localized_name":"material","name":"material","shape":7,"type":"MATERIAL","link":null},{"localized_name":"mesh","name":"mesh","type":"COMBO","widget":{"name":"mesh"},"link":null},{"localized_name":"mesh_path","name":"mesh_path","shape":7,"type":"STRING","widget":{"name":"mesh_path"},"link":null},{"localized_name":"normalize_mesh","name":"normalize_mesh","shape":7,"type":"BOOLEAN","widget":{"name":"normalize_mesh"},"link":null},{"localized_name":"trans_x","name":"trans_x","shape":7,"type":"FLOAT","widget":{"name":"trans_x"},"link":null},{"localized_name":"trans_y","name":"trans_y","shape":7,"type":"FLOAT","widget":{"name":"trans_y"},"link":null},{"localized_name":"trans_z","name":"trans_z","shape":7,"type":"FLOAT","widget":{"name":"trans_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","shape":7,"type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","shape":7,"type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","shape":7,"type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","shape":7,"type":"FLOAT","widget":{"name":"scale"},"link":null},{"localized_name":"diffuse_rgb","name":"diffuse_rgb","shape":7,"type":"STRING","widget":{"name":"diffuse_rgb"},"link":null},{"localized_name":"specular_rgb","name":"specular_rgb","shape":7,"type":"STRING","widget":{"name":"specular_rgb"},"link":null},{"localized_name":"roughness","name":"roughness","shape":7,"type":"FLOAT","widget":{"name":"roughness"},"link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[67]},{"localized_name":"MATERIAL","name":"MATERIAL","type":"MATERIAL","links":[]}],"properties":{"Node name for S&R":"RenderFormerLoadMesh","widget_ue_connectable":{}},"widgets_values":["phrenderformer_sphere_00.obj","",true,0.4400000000000001,-0.3480000000000001,-0.4000000000000001,0,0,0,0.10000000000000002,"255, 255, 255","0,0,0",0.05000000000000001,"image",null],"color":"#FDC501","bgcolor":"#111417"},{"id":44,"type":"RenderFormerLoadMesh","pos":[1940,1910],"size":[216.53378295898438,54],"flags":{"collapsed":true},"order":3,"mode":0,"inputs":[{"localized_name":"material","name":"material","shape":7,"type":"MATERIAL","link":null},{"localized_name":"mesh","name":"mesh","type":"COMBO","widget":{"name":"mesh"},"link":null},{"localized_name":"mesh_path","name":"mesh_path","shape":7,"type":"STRING","widget":{"name":"mesh_path"},"link":null},{"localized_name":"normalize_mesh","name":"normalize_mesh","shape":7,"type":"BOOLEAN","widget":{"name":"normalize_mesh"},"link":null},{"localized_name":"trans_x","name":"trans_x","shape":7,"type":"FLOAT","widget":{"name":"trans_x"},"link":null},{"localized_name":"trans_y","name":"trans_y","shape":7,"type":"FLOAT","widget":{"name":"trans_y"},"link":null},{"localized_name":"trans_z","name":"trans_z","shape":7,"type":"FLOAT","widget":{"name":"trans_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","shape":7,"type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","shape":7,"type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","shape":7,"type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","shape":7,"type":"FLOAT","widget":{"name":"scale"},"link":null},{"localized_name":"diffuse_rgb","name":"diffuse_rgb","shape":7,"type":"STRING","widget":{"name":"diffuse_rgb"},"link":null},{"localized_name":"specular_rgb","name":"specular_rgb","shape":7,"type":"STRING","widget":{"name":"specular_rgb"},"link":null},{"localized_name":"roughness","name":"roughness","shape":7,"type":"FLOAT","widget":{"name":"roughness"},"link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[66]},{"localized_name":"MATERIAL","name":"MATERIAL","type":"MATERIAL","links":[]}],"properties":{"Node name for S&R":"RenderFormerLoadMesh","widget_ue_connectable":{}},"widgets_values":["phrenderformer_sphere_00.obj","",true,0.32000000000000006,-0.3480000000000001,-0.4000000000000001,0,0,0,0.10000000000000002,"0, 0, 0","255,255,255",0.05000000000000001,"image",null],"color":"#FDC501","bgcolor":"#111417"},{"id":43,"type":"RenderFormerLoadMesh","pos":[1940,1870],"size":[216.53378295898438,54],"flags":{"collapsed":true},"order":24,"mode":0,"inputs":[{"localized_name":"material","name":"material","shape":7,"type":"MATERIAL","link":76},{"localized_name":"mesh","name":"mesh","type":"COMBO","widget":{"name":"mesh"},"link":null},{"localized_name":"mesh_path","name":"mesh_path","shape":7,"type":"STRING","widget":{"name":"mesh_path"},"link":null},{"localized_name":"normalize_mesh","name":"normalize_mesh","shape":7,"type":"BOOLEAN","widget":{"name":"normalize_mesh"},"link":null},{"localized_name":"trans_x","name":"trans_x","shape":7,"type":"FLOAT","widget":{"name":"trans_x"},"link":null},{"localized_name":"trans_y","name":"trans_y","shape":7,"type":"FLOAT","widget":{"name":"trans_y"},"link":null},{"localized_name":"trans_z","name":"trans_z","shape":7,"type":"FLOAT","widget":{"name":"trans_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","shape":7,"type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","shape":7,"type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","shape":7,"type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","shape":7,"type":"FLOAT","widget":{"name":"scale"},"link":null},{"localized_name":"diffuse_rgb","name":"diffuse_rgb","shape":7,"type":"STRING","widget":{"name":"diffuse_rgb"},"link":null},{"localized_name":"specular_rgb","name":"specular_rgb","shape":7,"type":"STRING","widget":{"name":"specular_rgb"},"link":null},{"localized_name":"roughness","name":"roughness","shape":7,"type":"FLOAT","widget":{"name":"roughness"},"link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[65]},{"localized_name":"MATERIAL","name":"MATERIAL","type":"MATERIAL","links":[]}],"properties":{"Node name for S&R":"RenderFormerLoadMesh","widget_ue_connectable":{}},"widgets_values":["phrenderformer_sphere_00.obj","",true,0.20000000000000004,-0.3480000000000001,-0.4000000000000001,0,0,0,0.10000000000000002,"255, 255, 255","10,10,10",0.05000000000000001,"image",null],"color":"#FDC501","bgcolor":"#111417"},{"id":48,"type":"RenderFormerMeshCombine","pos":[1680,1990],"size":[266.2938537597656,166],"flags":{"collapsed":true},"order":19,"mode":0,"inputs":[{"localized_name":"mesh_1","name":"mesh_1","type":"MESH","link":68},{"localized_name":"mesh_2","name":"mesh_2","shape":7,"type":"MESH","link":99},{"localized_name":"mesh_3","name":"mesh_3","shape":7,"type":"MESH","link":98},{"localized_name":"mesh_4","name":"mesh_4","shape":7,"type":"MESH","link":71},{"localized_name":"mesh_5","name":"mesh_5","shape":7,"type":"MESH","link":null},{"localized_name":"mesh_6","name":"mesh_6","shape":7,"type":"MESH","link":null},{"localized_name":"mesh_7","name":"mesh_7","shape":7,"type":"MESH","link":null},{"localized_name":"mesh_8","name":"mesh_8","shape":7,"type":"MESH","link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[94]},{"localized_name":"MESH_SEQUENCE","name":"MESH_SEQUENCE","type":"MESH_SEQUENCE","links":null}],"properties":{"Node name for S&R":"RenderFormerMeshCombine","widget_ue_connectable":{}},"widgets_values":[],"color":"#FDC501","bgcolor":"#111417"},{"id":51,"type":"RenderFormerLoadMesh","pos":[1680,1950],"size":[216.53378295898438,54],"flags":{"collapsed":true},"order":4,"mode":0,"inputs":[{"localized_name":"material","name":"material","shape":7,"type":"MATERIAL","link":null},{"localized_name":"mesh","name":"mesh","type":"COMBO","widget":{"name":"mesh"},"link":null},{"localized_name":"mesh_path","name":"mesh_path","shape":7,"type":"STRING","widget":{"name":"mesh_path"},"link":null},{"localized_name":"normalize_mesh","name":"normalize_mesh","shape":7,"type":"BOOLEAN","widget":{"name":"normalize_mesh"},"link":null},{"localized_name":"trans_x","name":"trans_x","shape":7,"type":"FLOAT","widget":{"name":"trans_x"},"link":null},{"localized_name":"trans_y","name":"trans_y","shape":7,"type":"FLOAT","widget":{"name":"trans_y"},"link":null},{"localized_name":"trans_z","name":"trans_z","shape":7,"type":"FLOAT","widget":{"name":"trans_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","shape":7,"type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","shape":7,"type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","shape":7,"type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","shape":7,"type":"FLOAT","widget":{"name":"scale"},"link":null},{"localized_name":"diffuse_rgb","name":"diffuse_rgb","shape":7,"type":"STRING","widget":{"name":"diffuse_rgb"},"link":null},{"localized_name":"specular_rgb","name":"specular_rgb","shape":7,"type":"STRING","widget":{"name":"specular_rgb"},"link":null},{"localized_name":"roughness","name":"roughness","shape":7,"type":"FLOAT","widget":{"name":"roughness"},"link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[71]},{"localized_name":"MATERIAL","name":"MATERIAL","type":"MATERIAL","links":null}],"properties":{"Node name for S&R":"RenderFormerLoadMesh","widget_ue_connectable":{}},"widgets_values":["plane.obj","",true,0,0,0,0,0,0,1,"204, 204, 204","25, 25, 25",0.7,"image",null],"color":"#FDC501","bgcolor":"#111417"},{"id":56,"type":"RenderFormerLoadMesh","pos":[1680,1910],"size":[216.53378295898438,54],"flags":{"collapsed":true},"order":5,"mode":0,"inputs":[{"localized_name":"material","name":"material","shape":7,"type":"MATERIAL","link":null},{"localized_name":"mesh","name":"mesh","type":"COMBO","widget":{"name":"mesh"},"link":null},{"localized_name":"mesh_path","name":"mesh_path","shape":7,"type":"STRING","widget":{"name":"mesh_path"},"link":null},{"localized_name":"normalize_mesh","name":"normalize_mesh","shape":7,"type":"BOOLEAN","widget":{"name":"normalize_mesh"},"link":null},{"localized_name":"trans_x","name":"trans_x","shape":7,"type":"FLOAT","widget":{"name":"trans_x"},"link":null},{"localized_name":"trans_y","name":"trans_y","shape":7,"type":"FLOAT","widget":{"name":"trans_y"},"link":null},{"localized_name":"trans_z","name":"trans_z","shape":7,"type":"FLOAT","widget":{"name":"trans_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","shape":7,"type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","shape":7,"type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","shape":7,"type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","shape":7,"type":"FLOAT","widget":{"name":"scale"},"link":null},{"localized_name":"diffuse_rgb","name":"diffuse_rgb","shape":7,"type":"STRING","widget":{"name":"diffuse_rgb"},"link":null},{"localized_name":"specular_rgb","name":"specular_rgb","shape":7,"type":"STRING","widget":{"name":"specular_rgb"},"link":null},{"localized_name":"roughness","name":"roughness","shape":7,"type":"FLOAT","widget":{"name":"roughness"},"link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[98]},{"localized_name":"MATERIAL","name":"MATERIAL","type":"MATERIAL","links":null}],"properties":{"Node name for S&R":"RenderFormerLoadMesh","widget_ue_connectable":{}},"widgets_values":["wall2.obj","",true,0,0,0,0,0,0,1,"255, 0, 0","0,0,0",0,"image",null],"color":"#FDC501","bgcolor":"#111417"},{"id":57,"type":"RenderFormerLoadMesh","pos":[1680,1870],"size":[216.53378295898438,54],"flags":{"collapsed":true},"order":6,"mode":0,"inputs":[{"localized_name":"material","name":"material","shape":7,"type":"MATERIAL","link":null},{"localized_name":"mesh","name":"mesh","type":"COMBO","widget":{"name":"mesh"},"link":null},{"localized_name":"mesh_path","name":"mesh_path","shape":7,"type":"STRING","widget":{"name":"mesh_path"},"link":null},{"localized_name":"normalize_mesh","name":"normalize_mesh","shape":7,"type":"BOOLEAN","widget":{"name":"normalize_mesh"},"link":null},{"localized_name":"trans_x","name":"trans_x","shape":7,"type":"FLOAT","widget":{"name":"trans_x"},"link":null},{"localized_name":"trans_y","name":"trans_y","shape":7,"type":"FLOAT","widget":{"name":"trans_y"},"link":null},{"localized_name":"trans_z","name":"trans_z","shape":7,"type":"FLOAT","widget":{"name":"trans_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","shape":7,"type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","shape":7,"type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","shape":7,"type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","shape":7,"type":"FLOAT","widget":{"name":"scale"},"link":null},{"localized_name":"diffuse_rgb","name":"diffuse_rgb","shape":7,"type":"STRING","widget":{"name":"diffuse_rgb"},"link":null},{"localized_name":"specular_rgb","name":"specular_rgb","shape":7,"type":"STRING","widget":{"name":"specular_rgb"},"link":null},{"localized_name":"roughness","name":"roughness","shape":7,"type":"FLOAT","widget":{"name":"roughness"},"link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[99]},{"localized_name":"MATERIAL","name":"MATERIAL","type":"MATERIAL","links":[]}],"properties":{"Node name for S&R":"RenderFormerLoadMesh","widget_ue_connectable":{}},"widgets_values":["wall1.obj","",true,0,0,0,0,0,0,1,"0, 135, 184","0,0,0",1,"image",null],"color":"#FDC501","bgcolor":"#111417"},{"id":53,"type":"RenderFormerLoadMesh","pos":[1680,1830],"size":[216.53378295898438,54],"flags":{"collapsed":true},"order":7,"mode":0,"inputs":[{"localized_name":"material","name":"material","shape":7,"type":"MATERIAL","link":null},{"localized_name":"mesh","name":"mesh","type":"COMBO","widget":{"name":"mesh"},"link":null},{"localized_name":"mesh_path","name":"mesh_path","shape":7,"type":"STRING","widget":{"name":"mesh_path"},"link":null},{"localized_name":"normalize_mesh","name":"normalize_mesh","shape":7,"type":"BOOLEAN","widget":{"name":"normalize_mesh"},"link":null},{"localized_name":"trans_x","name":"trans_x","shape":7,"type":"FLOAT","widget":{"name":"trans_x"},"link":null},{"localized_name":"trans_y","name":"trans_y","shape":7,"type":"FLOAT","widget":{"name":"trans_y"},"link":null},{"localized_name":"trans_z","name":"trans_z","shape":7,"type":"FLOAT","widget":{"name":"trans_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","shape":7,"type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","shape":7,"type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","shape":7,"type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","shape":7,"type":"FLOAT","widget":{"name":"scale"},"link":null},{"localized_name":"diffuse_rgb","name":"diffuse_rgb","shape":7,"type":"STRING","widget":{"name":"diffuse_rgb"},"link":null},{"localized_name":"specular_rgb","name":"specular_rgb","shape":7,"type":"STRING","widget":{"name":"specular_rgb"},"link":null},{"localized_name":"roughness","name":"roughness","shape":7,"type":"FLOAT","widget":{"name":"roughness"},"link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[68]},{"localized_name":"MATERIAL","name":"MATERIAL","type":"MATERIAL","links":null}],"properties":{"Node name for S&R":"RenderFormerLoadMesh","widget_ue_connectable":{}},"widgets_values":["wall0.obj","",true,0,0,0,0,0,0,1,"0, 0, 0","250,250,250",0.08000000000000002,"image",null],"color":"#FDC501","bgcolor":"#111417"},{"id":47,"type":"RenderFormerLoadMesh","pos":[1940,1830],"size":[216.53378295898438,54],"flags":{"collapsed":true},"order":8,"mode":0,"inputs":[{"localized_name":"material","name":"material","shape":7,"type":"MATERIAL","link":null},{"localized_name":"mesh","name":"mesh","type":"COMBO","widget":{"name":"mesh"},"link":null},{"localized_name":"mesh_path","name":"mesh_path","shape":7,"type":"STRING","widget":{"name":"mesh_path"},"link":null},{"localized_name":"normalize_mesh","name":"normalize_mesh","shape":7,"type":"BOOLEAN","widget":{"name":"normalize_mesh"},"link":null},{"localized_name":"trans_x","name":"trans_x","shape":7,"type":"FLOAT","widget":{"name":"trans_x"},"link":null},{"localized_name":"trans_y","name":"trans_y","shape":7,"type":"FLOAT","widget":{"name":"trans_y"},"link":null},{"localized_name":"trans_z","name":"trans_z","shape":7,"type":"FLOAT","widget":{"name":"trans_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","shape":7,"type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","shape":7,"type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","shape":7,"type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","shape":7,"type":"FLOAT","widget":{"name":"scale"},"link":null},{"localized_name":"diffuse_rgb","name":"diffuse_rgb","shape":7,"type":"STRING","widget":{"name":"diffuse_rgb"},"link":null},{"localized_name":"specular_rgb","name":"specular_rgb","shape":7,"type":"STRING","widget":{"name":"specular_rgb"},"link":null},{"localized_name":"roughness","name":"roughness","shape":7,"type":"FLOAT","widget":{"name":"roughness"},"link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[64]},{"localized_name":"MATERIAL","name":"MATERIAL","type":"MATERIAL","links":[]}],"properties":{"Node name for S&R":"RenderFormerLoadMesh","widget_ue_connectable":{}},"widgets_values":["phrenderformer_sphere_00.obj","",true,0.08000000000000002,-0.3480000000000001,-0.4000000000000001,0,0,0,0.10000000000000002,"0, 0, 0","10,10,10",0.05000000000000001,"image",null],"color":"#FDC501","bgcolor":"#111417"},{"id":17,"type":"RenderFormerLoadMesh","pos":[1940,1170],"size":[216.53378295898438,589],"flags":{"collapsed":false},"order":9,"mode":0,"inputs":[{"localized_name":"material","name":"material","shape":7,"type":"MATERIAL","link":null},{"localized_name":"mesh","name":"mesh","type":"COMBO","widget":{"name":"mesh"},"link":null},{"localized_name":"mesh_path","name":"mesh_path","shape":7,"type":"STRING","widget":{"name":"mesh_path"},"link":null},{"localized_name":"normalize_mesh","name":"normalize_mesh","shape":7,"type":"BOOLEAN","widget":{"name":"normalize_mesh"},"link":null},{"localized_name":"trans_x","name":"trans_x","shape":7,"type":"FLOAT","widget":{"name":"trans_x"},"link":null},{"localized_name":"trans_y","name":"trans_y","shape":7,"type":"FLOAT","widget":{"name":"trans_y"},"link":null},{"localized_name":"trans_z","name":"trans_z","shape":7,"type":"FLOAT","widget":{"name":"trans_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","shape":7,"type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","shape":7,"type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","shape":7,"type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","shape":7,"type":"FLOAT","widget":{"name":"scale"},"link":null},{"localized_name":"diffuse_rgb","name":"diffuse_rgb","shape":7,"type":"STRING","widget":{"name":"diffuse_rgb"},"link":null},{"localized_name":"specular_rgb","name":"specular_rgb","shape":7,"type":"STRING","widget":{"name":"specular_rgb"},"link":null},{"localized_name":"roughness","name":"roughness","shape":7,"type":"FLOAT","widget":{"name":"roughness"},"link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[91]},{"localized_name":"MATERIAL","name":"MATERIAL","type":"MATERIAL","links":[]}],"properties":{"Node name for S&R":"RenderFormerLoadMesh","widget_ue_connectable":{}},"widgets_values":["fox.obj","",true,0,0,-0.32400000000000007,0,0,-79.80000000000001,1,"0, 0, 0","100,100,100",0,"image",null],"color":"#FDC501","bgcolor":"#111417"},{"id":52,"type":"RenderFormerLoadMesh","pos":[2210,1170],"size":[216.53378295898438,589],"flags":{"collapsed":false},"order":10,"mode":0,"inputs":[{"localized_name":"material","name":"material","shape":7,"type":"MATERIAL","link":null},{"localized_name":"mesh","name":"mesh","type":"COMBO","widget":{"name":"mesh"},"link":null},{"localized_name":"mesh_path","name":"mesh_path","shape":7,"type":"STRING","widget":{"name":"mesh_path"},"link":null},{"localized_name":"normalize_mesh","name":"normalize_mesh","shape":7,"type":"BOOLEAN","widget":{"name":"normalize_mesh"},"link":null},{"localized_name":"trans_x","name":"trans_x","shape":7,"type":"FLOAT","widget":{"name":"trans_x"},"link":null},{"localized_name":"trans_y","name":"trans_y","shape":7,"type":"FLOAT","widget":{"name":"trans_y"},"link":null},{"localized_name":"trans_z","name":"trans_z","shape":7,"type":"FLOAT","widget":{"name":"trans_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","shape":7,"type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","shape":7,"type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","shape":7,"type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","shape":7,"type":"FLOAT","widget":{"name":"scale"},"link":null},{"localized_name":"diffuse_rgb","name":"diffuse_rgb","shape":7,"type":"STRING","widget":{"name":"diffuse_rgb"},"link":null},{"localized_name":"specular_rgb","name":"specular_rgb","shape":7,"type":"STRING","widget":{"name":"specular_rgb"},"link":null},{"localized_name":"roughness","name":"roughness","shape":7,"type":"FLOAT","widget":{"name":"roughness"},"link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[92]},{"localized_name":"MATERIAL","name":"MATERIAL","type":"MATERIAL","links":[]}],"properties":{"Node name for S&R":"RenderFormerLoadMesh","widget_ue_connectable":{}},"widgets_values":["phrenderformer_sphere_00.obj","",true,0.31000000000000005,0,-0.3600000000000001,0,0,0,0.30000000000000004,"5, 147, 23","10,10,10",0,"image",null],"color":"#FDC501","bgcolor":"#111417"},{"id":55,"type":"RenderFormerCamera","pos":[2490,1170],"size":[270,202],"flags":{},"order":11,"mode":0,"inputs":[{"localized_name":"camera_pos_x","name":"camera_pos_x","type":"FLOAT","widget":{"name":"camera_pos_x"},"link":null},{"localized_name":"camera_pos_y","name":"camera_pos_y","type":"FLOAT","widget":{"name":"camera_pos_y"},"link":null},{"localized_name":"camera_pos_z","name":"camera_pos_z","type":"FLOAT","widget":{"name":"camera_pos_z"},"link":null},{"localized_name":"camera_look_at_x","name":"camera_look_at_x","type":"FLOAT","widget":{"name":"camera_look_at_x"},"link":null},{"localized_name":"camera_look_at_y","name":"camera_look_at_y","type":"FLOAT","widget":{"name":"camera_look_at_y"},"link":null},{"localized_name":"camera_look_at_z","name":"camera_look_at_z","type":"FLOAT","widget":{"name":"camera_look_at_z"},"link":null},{"localized_name":"fov","name":"fov","type":"FLOAT","widget":{"name":"fov"},"link":null}],"outputs":[{"localized_name":"CAMERA","name":"CAMERA","type":"CAMERA","links":[96,122]}],"properties":{"Node name for S&R":"RenderFormerCamera","widget_ue_connectable":{}},"widgets_values":[0,-2,0,0,0,0,37.5],"color":"#FDC501","bgcolor":"#111417"},{"id":8,"type":"MarkdownNote","pos":[3190,970],"size":[290,120],"flags":{},"order":12,"mode":0,"inputs":[],"outputs":[],"properties":{"widget_ue_connectable":{}},"widgets_values":["# III\n\n## Config & Processing\n\nConfiguration settings for sampling."],"color":"#222","bgcolor":"#000"},{"id":42,"type":"SaveVideo","pos":[3550,1990],"size":[864,962],"flags":{},"order":32,"mode":0,"inputs":[{"localized_name":"video","name":"video","type":"VIDEO","link":63},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null},{"localized_name":"format","name":"format","type":"COMBO","widget":{"name":"format"},"link":null},{"localized_name":"codec","name":"codec","type":"COMBO","widget":{"name":"codec"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.42","Node name for S&R":"SaveVideo","widget_ue_connectable":{}},"widgets_values":["video/ComfyUI","auto","auto"]},{"id":54,"type":"RenderFormerLighting","pos":[2490,1440],"size":[270,250],"flags":{},"order":13,"mode":0,"inputs":[{"localized_name":"emissive_rgb","name":"emissive_rgb","type":"STRING","widget":{"name":"emissive_rgb"},"link":null},{"localized_name":"emissive_strength","name":"emissive_strength","type":"FLOAT","widget":{"name":"emissive_strength"},"link":null},{"localized_name":"light_pos_x","name":"light_pos_x","type":"FLOAT","widget":{"name":"light_pos_x"},"link":null},{"localized_name":"light_pos_y","name":"light_pos_y","type":"FLOAT","widget":{"name":"light_pos_y"},"link":null},{"localized_name":"light_pos_z","name":"light_pos_z","type":"FLOAT","widget":{"name":"light_pos_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","type":"FLOAT","widget":{"name":"scale"},"link":null}],"outputs":[{"localized_name":"LIGHTING","name":"LIGHTING","type":"LIGHTING","links":[113]}],"properties":{"Node name for S&R":"RenderFormerLighting","widget_ue_connectable":{}},"widgets_values":["255, 255, 255",3000,0,0,2.1,0,0,0,2.5],"color":"#FDC501","bgcolor":"#111417"},{"id":38,"type":"RenderFormerGenerator","pos":[3190,1630],"size":[290,146],"flags":{},"order":29,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":55},{"localized_name":"scene","name":"scene","shape":7,"type":"SCENE","link":126},{"localized_name":"scene_sequence","name":"scene_sequence","shape":7,"type":"SCENE_SEQUENCE","link":127},{"localized_name":"resolution","name":"resolution","type":"INT","widget":{"name":"resolution"},"link":null},{"localized_name":"tone_mapper","name":"tone_mapper","type":"COMBO","widget":{"name":"tone_mapper"},"link":null},{"localized_name":"resolution_vid","name":"resolution_vid","shape":7,"type":"INT","widget":{"name":"resolution_vid"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[88]},{"localized_name":"IMAGES","name":"IMAGES","type":"IMAGE","links":[102]}],"properties":{"Node name for S&R":"RenderFormerGenerator","widget_ue_connectable":{}},"widgets_values":[512,"agx",512],"color":"#FDC501","bgcolor":"#111417"},{"id":10,"type":"RenderFormerModelLoader","pos":[950,1170],"size":[299.8785095214844,82],"flags":{},"order":14,"mode":0,"inputs":[{"localized_name":"model_id","name":"model_id","type":"STRING","widget":{"name":"model_id"},"link":null},{"localized_name":"precision","name":"precision","type":"COMBO","widget":{"name":"precision"},"link":null}],"outputs":[{"localized_name":"MODEL","name":"MODEL","type":"MODEL","links":[55]}],"properties":{"Node name for S&R":"RenderFormerModelLoader","widget_ue_connectable":{}},"widgets_values":["microsoft/renderformer-v1.1-swin-large","fp32"],"color":"#FDC501","bgcolor":"#111417"},{"id":34,"type":"CreateVideo","pos":[3190,1840],"size":[290,80],"flags":{},"order":31,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":102},{"localized_name":"audio","name":"audio","shape":7,"type":"AUDIO","link":null},{"localized_name":"fps","name":"fps","type":"FLOAT","widget":{"name":"fps"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[63]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.42","Node name for S&R":"CreateVideo","widget_ue_connectable":{}},"widgets_values":[30]},{"id":63,"type":"RenderFormerLighting","pos":[2490,1760],"size":[270,250],"flags":{},"order":15,"mode":0,"inputs":[{"localized_name":"emissive_rgb","name":"emissive_rgb","type":"STRING","widget":{"name":"emissive_rgb"},"link":null},{"localized_name":"emissive_strength","name":"emissive_strength","type":"FLOAT","widget":{"name":"emissive_strength"},"link":null},{"localized_name":"light_pos_x","name":"light_pos_x","type":"FLOAT","widget":{"name":"light_pos_x"},"link":null},{"localized_name":"light_pos_y","name":"light_pos_y","type":"FLOAT","widget":{"name":"light_pos_y"},"link":null},{"localized_name":"light_pos_z","name":"light_pos_z","type":"FLOAT","widget":{"name":"light_pos_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","type":"FLOAT","widget":{"name":"scale"},"link":null}],"outputs":[{"localized_name":"LIGHTING","name":"LIGHTING","type":"LIGHTING","links":[109]}],"properties":{"Node name for S&R":"RenderFormerLighting","widget_ue_connectable":{}},"widgets_values":["255, 255, 255",1600,0.25800000000000006,-0.22900000000000006,2.1,0,0,0,2.5],"color":"#FDC501","bgcolor":"#111417"},{"id":9,"type":"MarkdownNote","pos":[3550,970],"size":[760,120],"flags":{},"order":16,"mode":0,"inputs":[],"outputs":[],"properties":{"widget_ue_connectable":{}},"widgets_values":["# IV\n\n## Output\n\nEnjoy."],"color":"#222","bgcolor":"#000"},{"id":32,"type":"RenderFormerCameraTarget","pos":[2830,1170],"size":[290,230],"flags":{},"order":20,"mode":0,"inputs":[{"localized_name":"start_camera","name":"start_camera","type":"CAMERA","link":96},{"localized_name":"end_pos_x","name":"end_pos_x","type":"FLOAT","widget":{"name":"end_pos_x"},"link":null},{"localized_name":"end_pos_y","name":"end_pos_y","type":"FLOAT","widget":{"name":"end_pos_y"},"link":null},{"localized_name":"end_pos_z","name":"end_pos_z","type":"FLOAT","widget":{"name":"end_pos_z"},"link":null},{"localized_name":"end_look_at_x","name":"end_look_at_x","type":"FLOAT","widget":{"name":"end_look_at_x"},"link":null},{"localized_name":"end_look_at_y","name":"end_look_at_y","type":"FLOAT","widget":{"name":"end_look_at_y"},"link":null},{"localized_name":"end_look_at_z","name":"end_look_at_z","type":"FLOAT","widget":{"name":"end_look_at_z"},"link":null},{"localized_name":"end_fov","name":"end_fov","type":"FLOAT","widget":{"name":"end_fov"},"link":null}],"outputs":[{"localized_name":"CAMERA_SEQUENCE","name":"CAMERA_SEQUENCE","type":"CAMERA_SEQUENCE","links":[123]}],"properties":{"Node name for S&R":"RenderFormerCameraTarget","widget_ue_connectable":{}},"widgets_values":[0,-1.0300000000000002,0,0,0,0,48],"color":"#FDC501","bgcolor":"#111417"},{"id":64,"type":"RenderFormerLightingTarget","pos":[2830,1470],"size":[287.404296875,226],"flags":{},"order":21,"mode":0,"inputs":[{"localized_name":"start_lighting","name":"start_lighting","type":"LIGHTING","link":113},{"localized_name":"end_pos_x","name":"end_pos_x","type":"FLOAT","widget":{"name":"end_pos_x"},"link":null},{"localized_name":"end_pos_y","name":"end_pos_y","type":"FLOAT","widget":{"name":"end_pos_y"},"link":null},{"localized_name":"end_pos_z","name":"end_pos_z","type":"FLOAT","widget":{"name":"end_pos_z"},"link":null},{"localized_name":"end_rot_x","name":"end_rot_x","type":"FLOAT","widget":{"name":"end_rot_x"},"link":null},{"localized_name":"end_rot_y","name":"end_rot_y","type":"FLOAT","widget":{"name":"end_rot_y"},"link":null},{"localized_name":"end_rot_z","name":"end_rot_z","type":"FLOAT","widget":{"name":"end_rot_z"},"link":null},{"localized_name":"end_scale","name":"end_scale","type":"FLOAT","widget":{"name":"end_scale"},"link":null},{"localized_name":"end_emissive_strength","name":"end_emissive_strength","type":"FLOAT","widget":{"name":"end_emissive_strength"},"link":null}],"outputs":[{"localized_name":"LIGHTING","name":"LIGHTING","type":"LIGHTING","links":[114]}],"properties":{"Node name for S&R":"RenderFormerLightingTarget","widget_ue_connectable":{}},"widgets_values":[-0.5090000000000001,0,2.1,0,0,0,2.5,330],"color":"#FDC501","bgcolor":"#111417"},{"id":62,"type":"RenderFormerLightingTarget","pos":[2830,1760],"size":[287.404296875,226],"flags":{},"order":22,"mode":0,"inputs":[{"localized_name":"start_lighting","name":"start_lighting","type":"LIGHTING","link":109},{"localized_name":"end_pos_x","name":"end_pos_x","type":"FLOAT","widget":{"name":"end_pos_x"},"link":null},{"localized_name":"end_pos_y","name":"end_pos_y","type":"FLOAT","widget":{"name":"end_pos_y"},"link":null},{"localized_name":"end_pos_z","name":"end_pos_z","type":"FLOAT","widget":{"name":"end_pos_z"},"link":null},{"localized_name":"end_rot_x","name":"end_rot_x","type":"FLOAT","widget":{"name":"end_rot_x"},"link":null},{"localized_name":"end_rot_y","name":"end_rot_y","type":"FLOAT","widget":{"name":"end_rot_y"},"link":null},{"localized_name":"end_rot_z","name":"end_rot_z","type":"FLOAT","widget":{"name":"end_rot_z"},"link":null},{"localized_name":"end_scale","name":"end_scale","type":"FLOAT","widget":{"name":"end_scale"},"link":null},{"localized_name":"end_emissive_strength","name":"end_emissive_strength","type":"FLOAT","widget":{"name":"end_emissive_strength"},"link":null}],"outputs":[{"localized_name":"LIGHTING","name":"LIGHTING","type":"LIGHTING","links":[110]}],"properties":{"Node name for S&R":"RenderFormerLightingTarget","widget_ue_connectable":{}},"widgets_values":[1.6300000000000003,-1.1100000000000003,2.1,0,0,0,2.5,400],"color":"#FDC501","bgcolor":"#111417"},{"id":61,"type":"RenderFormerLightingCombine","pos":[3190,1170],"size":[290,166],"flags":{},"order":25,"mode":0,"inputs":[{"localized_name":"lighting_1","name":"lighting_1","shape":7,"type":"LIGHTING","link":114},{"localized_name":"lighting_2","name":"lighting_2","shape":7,"type":"LIGHTING","link":110},{"localized_name":"lighting_3","name":"lighting_3","shape":7,"type":"LIGHTING","link":null},{"localized_name":"lighting_4","name":"lighting_4","shape":7,"type":"LIGHTING","link":null},{"localized_name":"lighting_5","name":"lighting_5","shape":7,"type":"LIGHTING","link":null},{"localized_name":"lighting_6","name":"lighting_6","shape":7,"type":"LIGHTING","link":null},{"localized_name":"lighting_7","name":"lighting_7","shape":7,"type":"LIGHTING","link":null},{"localized_name":"lighting_8","name":"lighting_8","shape":7,"type":"LIGHTING","link":null}],"outputs":[{"localized_name":"LIGHTING","name":"LIGHTING","type":"LIGHTING","links":[121]},{"localized_name":"LIGHTING_SEQUENCE","name":"LIGHTING_SEQUENCE","type":"LIGHTING","links":[124]}],"properties":{"Node name for S&R":"RenderFormerLightingCombine","widget_ue_connectable":{}},"widgets_values":[],"color":"#FDC501","bgcolor":"#111417"},{"id":7,"type":"MarkdownNote","pos":[1320,970],"size":[1800,120],"flags":{},"order":17,"mode":0,"inputs":[],"outputs":[],"properties":{"widget_ue_connectable":{}},"widgets_values":["# II\n\n## Inputs\n\nYour 3d models goes here. Define Materials per Mesh Loader or Overwrite anothers Mesh Loader by using the *MATERIAL* in-/output."],"color":"#222","bgcolor":"#000"},{"id":28,"type":"RenderFormerLoadMesh","pos":[1670,1170],"size":[216.53378295898438,589],"flags":{"collapsed":false},"order":18,"mode":0,"inputs":[{"localized_name":"material","name":"material","shape":7,"type":"MATERIAL","link":null},{"localized_name":"mesh","name":"mesh","type":"COMBO","widget":{"name":"mesh"},"link":null},{"localized_name":"mesh_path","name":"mesh_path","shape":7,"type":"STRING","widget":{"name":"mesh_path"},"link":103},{"localized_name":"normalize_mesh","name":"normalize_mesh","shape":7,"type":"BOOLEAN","widget":{"name":"normalize_mesh"},"link":null},{"localized_name":"trans_x","name":"trans_x","shape":7,"type":"FLOAT","widget":{"name":"trans_x"},"link":null},{"localized_name":"trans_y","name":"trans_y","shape":7,"type":"FLOAT","widget":{"name":"trans_y"},"link":null},{"localized_name":"trans_z","name":"trans_z","shape":7,"type":"FLOAT","widget":{"name":"trans_z"},"link":null},{"localized_name":"rot_x","name":"rot_x","shape":7,"type":"FLOAT","widget":{"name":"rot_x"},"link":null},{"localized_name":"rot_y","name":"rot_y","shape":7,"type":"FLOAT","widget":{"name":"rot_y"},"link":null},{"localized_name":"rot_z","name":"rot_z","shape":7,"type":"FLOAT","widget":{"name":"rot_z"},"link":null},{"localized_name":"scale","name":"scale","shape":7,"type":"FLOAT","widget":{"name":"scale"},"link":null},{"localized_name":"diffuse_rgb","name":"diffuse_rgb","shape":7,"type":"STRING","widget":{"name":"diffuse_rgb"},"link":null},{"localized_name":"specular_rgb","name":"specular_rgb","shape":7,"type":"STRING","widget":{"name":"specular_rgb"},"link":null},{"localized_name":"roughness","name":"roughness","shape":7,"type":"FLOAT","widget":{"name":"roughness"},"link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[90,118]},{"localized_name":"MATERIAL","name":"MATERIAL","type":"MATERIAL","links":[76]}],"properties":{"Node name for S&R":"RenderFormerLoadMesh","widget_ue_connectable":{}},"widgets_values":["bunny.obj","",true,0,0,0.19700000000000004,0,18.5,142.8,1,"223, 168, 0","25, 25, 25",0.7,"image",null],"color":"#FDC501","bgcolor":"#111417"},{"id":70,"type":"RenderFormerSceneBuilder","pos":[3190,1410],"size":[319.095703125,182],"flags":{},"order":28,"mode":0,"inputs":[{"localized_name":"mesh","name":"mesh","type":"MESH","link":120},{"localized_name":"lighting","name":"lighting","type":"LIGHTING","link":121},{"localized_name":"camera","name":"camera","type":"CAMERA","link":122},{"localized_name":"camera_sequence","name":"camera_sequence","shape":7,"type":"CAMERA_SEQUENCE","link":123},{"localized_name":"lighting_sequence","name":"lighting_sequence","shape":7,"type":"LIGHTING","link":124},{"localized_name":"mesh_sequence","name":"mesh_sequence","shape":7,"type":"MESH_SEQUENCE","link":129},{"localized_name":"num_frames","name":"num_frames","shape":7,"type":"INT","widget":{"name":"num_frames"},"link":null},{"localized_name":"add_default_background","name":"add_default_background","shape":7,"type":"BOOLEAN","widget":{"name":"add_default_background"},"link":null}],"outputs":[{"localized_name":"SCENE","name":"SCENE","type":"SCENE","links":[126]},{"localized_name":"SCENE_SEQUENCE","name":"SCENE_SEQUENCE","type":"SCENE_SEQUENCE","links":[127]}],"properties":{"Node name for S&R":"RenderFormerSceneBuilder","widget_ue_connectable":{}},"widgets_values":[60,false],"color":"#FDC501","bgcolor":"#111417"},{"id":20,"type":"RenderFormerMeshCombine","pos":[2210,1830],"size":[228.96835327148438,166],"flags":{},"order":27,"mode":0,"inputs":[{"localized_name":"mesh_1","name":"mesh_1","type":"MESH","link":90},{"localized_name":"mesh_2","name":"mesh_2","shape":7,"type":"MESH","link":91},{"localized_name":"mesh_3","name":"mesh_3","shape":7,"type":"MESH","link":92},{"localized_name":"mesh_4","name":"mesh_4","shape":7,"type":"MESH","link":93},{"localized_name":"mesh_5","name":"mesh_5","shape":7,"type":"MESH","link":94},{"localized_name":"mesh_6","name":"mesh_6","shape":7,"type":"MESH","link":null},{"localized_name":"mesh_7","name":"mesh_7","shape":7,"type":"MESH","link":null},{"localized_name":"mesh_8","name":"mesh_8","shape":7,"type":"MESH","link":null}],"outputs":[{"localized_name":"MESH","name":"MESH","type":"MESH","links":[120]},{"localized_name":"MESH_SEQUENCE","name":"MESH_SEQUENCE","type":"MESH_SEQUENCE","links":null}],"properties":{"Node name for S&R":"RenderFormerMeshCombine","widget_ue_connectable":{}},"widgets_values":[],"color":"#FDC501","bgcolor":"#111417"},{"id":69,"type":"RenderFormerMeshTarget","pos":[2836.412353515625,2066.539794921875],"size":[273.046875,274],"flags":{},"order":23,"mode":0,"inputs":[{"localized_name":"start_mesh","name":"start_mesh","type":"MESH","link":118},{"localized_name":"end_mesh_pos_x","name":"end_mesh_pos_x","type":"FLOAT","widget":{"name":"end_mesh_pos_x"},"link":null},{"localized_name":"end_mesh_pos_y","name":"end_mesh_pos_y","type":"FLOAT","widget":{"name":"end_mesh_pos_y"},"link":null},{"localized_name":"end_mesh_pos_z","name":"end_mesh_pos_z","type":"FLOAT","widget":{"name":"end_mesh_pos_z"},"link":null},{"localized_name":"end_mesh_rot_x","name":"end_mesh_rot_x","type":"FLOAT","widget":{"name":"end_mesh_rot_x"},"link":null},{"localized_name":"end_mesh_rot_y","name":"end_mesh_rot_y","type":"FLOAT","widget":{"name":"end_mesh_rot_y"},"link":null},{"localized_name":"end_mesh_rot_z","name":"end_mesh_rot_z","type":"FLOAT","widget":{"name":"end_mesh_rot_z"},"link":null},{"localized_name":"end_scale","name":"end_scale","type":"FLOAT","widget":{"name":"end_scale"},"link":null},{"localized_name":"end_diffuse_rgb","name":"end_diffuse_rgb","type":"STRING","widget":{"name":"end_diffuse_rgb"},"link":null},{"localized_name":"end_specular_rgb","name":"end_specular_rgb","type":"STRING","widget":{"name":"end_specular_rgb"},"link":null},{"localized_name":"end_roughness","name":"end_roughness","type":"FLOAT","widget":{"name":"end_roughness"},"link":null}],"outputs":[{"localized_name":"MESH_SEQUENCE","name":"MESH_SEQUENCE","type":"MESH_SEQUENCE","links":[129]}],"properties":{"Node name for S&R":"RenderFormerMeshTarget","widget_ue_connectable":{}},"widgets_values":[-0.26800000000000007,0,0,0,0,206.3,1,"204, 204, 204","25, 25, 25",0.7],"color":"#FDC501","bgcolor":"#111417"}],"links":[[55,10,0,38,0,"MODEL"],[63,34,0,42,0,"VIDEO"],[64,47,0,45,0,"MESH"],[65,43,0,45,1,"MESH"],[66,44,0,45,2,"MESH"],[67,46,0,45,3,"MESH"],[68,53,0,48,0,"MESH"],[71,51,0,48,3,"MESH"],[76,28,1,43,0,"MATERIAL"],[88,38,0,16,0,"IMAGE"],[90,28,0,20,0,"MESH"],[91,17,0,20,1,"MESH"],[92,52,0,20,2,"MESH"],[93,45,0,20,3,"MESH"],[94,48,0,20,4,"MESH"],[96,55,0,32,0,"CAMERA"],[98,56,0,48,2,"MESH"],[99,57,0,48,1,"MESH"],[102,38,1,34,0,"IMAGE"],[103,58,2,28,2,"STRING"],[109,63,0,62,0,"LIGHTING"],[110,62,0,61,1,"LIGHTING"],[113,54,0,64,0,"LIGHTING"],[114,64,0,61,0,"LIGHTING"],[118,28,0,69,0,"MESH"],[120,20,0,70,0,"MESH"],[121,61,0,70,1,"LIGHTING"],[122,55,0,70,2,"CAMERA"],[123,32,0,70,3,"CAMERA_SEQUENCE"],[124,61,1,70,4,"LIGHTING"],[126,70,0,38,1,"SCENE"],[127,70,1,38,2,"SCENE_SEQUENCE"],[129,69,0,70,5,"MESH_SEQUENCE"]],"groups":[],"config":{},"extra":{"ue_links":[],"ds":{"scale":0.7164825466804996,"offset":[-1313.3942813776575,-1024.4333897935503]},"links_added_by_ue":[]},"version":0.4} \ No newline at end of file diff --git a/nodes.py b/nodes.py index 5efe577..010573b 100644 --- a/nodes.py +++ b/nodes.py @@ -571,6 +571,7 @@ class RenderFormerSceneBuilder: "camera_sequence": ("CAMERA_SEQUENCE",), "camera_sequence": ("CAMERA_SEQUENCE",), "lighting_sequence": ("LIGHTING",), + "mesh_sequence": ("MESH_SEQUENCE",), "num_frames": ("INT", {"default": 1, "min": 1, "max": 1000}), "add_default_background": ("BOOLEAN", {"default": False}), } @@ -580,11 +581,11 @@ class RenderFormerSceneBuilder: FUNCTION = "build_scene" CATEGORY = "PHRenderFormer" - def build_scene(self, mesh, lighting, camera, camera_sequence=None, lighting_sequence=None, num_frames=1, add_default_background=False): + def build_scene(self, mesh, lighting, camera, camera_sequence=None, lighting_sequence=None, mesh_sequence=None, num_frames=1, add_default_background=False): output_scene = None output_sequence = None - is_animation = num_frames > 1 and (camera_sequence is not None or lighting_sequence is not None) + is_animation = num_frames > 1 and (camera_sequence is not None or lighting_sequence is not None or mesh_sequence is not None) if not is_animation: # Build a single static scene @@ -598,13 +599,55 @@ class RenderFormerSceneBuilder: # --- Determine Start and End Configurations --- # The 'camera' and 'lighting' inputs are ALWAYS the start frame. - start_cam_config = camera - start_lighting_config = lighting + # For animations, the sequence inputs are the source of truth for BOTH start and end frames. + # If a sequence isn't provided, we fall back to the static input for that element. + start_cam_config = camera_sequence["sequence"][0] if camera_sequence and "sequence" in camera_sequence and camera_sequence["sequence"] else camera + end_cam_config = camera_sequence["sequence"][-1] if camera_sequence and "sequence" in camera_sequence and camera_sequence["sequence"] else camera + + start_lighting_config = lighting_sequence["start_lights"] if lighting_sequence and isinstance(lighting_sequence, dict) and "start_lights" in lighting_sequence else lighting + end_lighting_config = lighting_sequence["end_lights"] if lighting_sequence and isinstance(lighting_sequence, dict) and "end_lights" in lighting_sequence else lighting + + # --- Mesh Configuration: Smartly combine static and animated meshes --- + if not (mesh_sequence and isinstance(mesh_sequence, dict)): + # If there's no animation sequence, we just use the static meshes. + start_mesh_config = mesh + end_mesh_config = copy.deepcopy(mesh) if mesh else None + else: + # An animation sequence exists. We need to filter out the animated mesh's + # static counterpart from the main 'mesh' input to avoid duplication. + static_meshes = mesh.get("meshes", []) if mesh else [] + static_materials = mesh.get("materials", []) if mesh else [] + static_transforms = mesh.get("transforms", []) if mesh else [] + + animated_start_data = mesh_sequence.get("start_meshes", {}) + animated_start_meshes = animated_start_data.get("meshes", []) + + # These lists will hold the static meshes that are NOT being animated. + clean_static_meshes, clean_static_materials, clean_static_transforms = [], [], [] + + # Iterate through the static meshes and keep only the ones that are not + # also present in the animated list (by object identity). + for i, static_mesh_obj in enumerate(static_meshes): + if not any(static_mesh_obj is anim_mesh_obj for anim_mesh_obj in animated_start_meshes): + clean_static_meshes.append(static_mesh_obj) + clean_static_materials.append(static_materials[i]) + clean_static_transforms.append(static_transforms[i]) + + # The start frame is the clean static list plus the start state of the animated meshes. + start_mesh_config = { + "meshes": clean_static_meshes + animated_start_data.get("meshes", []), + "materials": clean_static_materials + animated_start_data.get("materials", []), + "transforms": clean_static_transforms + animated_start_data.get("transforms", []) + } + + # The end frame is a copy of the clean static list plus the end state of the animated meshes. + animated_end_data = mesh_sequence.get("end_meshes", {}) + end_mesh_config = { + "meshes": copy.deepcopy(clean_static_meshes) + animated_end_data.get("meshes", []), + "materials": copy.deepcopy(clean_static_materials) + animated_end_data.get("materials", []), + "transforms": copy.deepcopy(clean_static_transforms) + animated_end_data.get("transforms", []) + } - # The '..._sequence' inputs provide the end frame. If not provided, the end state is the same as the start. - end_cam_config = camera_sequence["sequence"][-1] if camera_sequence and "sequence" in camera_sequence and camera_sequence["sequence"] else start_cam_config - # Check if lighting_sequence is a dictionary (i.e., an animation) before accessing its keys. - end_lighting_config = lighting_sequence["end_lights"] if lighting_sequence and isinstance(lighting_sequence, dict) and "end_lights" in lighting_sequence else start_lighting_config # --- Build Keyframe Scenes in completely isolated directories --- start_scene = None @@ -613,14 +656,14 @@ class RenderFormerSceneBuilder: with tempfile.TemporaryDirectory() as start_tmpdir, tempfile.TemporaryDirectory() as end_tmpdir: # Build scene for the START frame print("PHRenderFormer: Building start frame...") - start_scene = self._build_single_scene(start_tmpdir, mesh, start_cam_config, start_lighting_config, add_default_background) + start_scene = self._build_single_scene(start_tmpdir, start_mesh_config, start_cam_config, start_lighting_config, add_default_background) if not start_scene: raise Exception("Failed to build the start frame for interpolation.") pbar.update(1) # Build scene for the END frame print("PHRenderFormer: Building end frame...") - end_scene = self._build_single_scene(end_tmpdir, mesh, end_cam_config, end_lighting_config, add_default_background) + end_scene = self._build_single_scene(end_tmpdir, end_mesh_config, end_cam_config, end_lighting_config, add_default_background) if not end_scene: raise Exception("Failed to build the end frame for interpolation.") pbar.update(1) @@ -810,31 +853,166 @@ class RenderFormerMeshCombine: } } - RETURN_TYPES = ("MESH",) + RETURN_TYPES = ("MESH", "MESH_SEQUENCE",) + RETURN_NAMES = ("MESH", "MESH_SEQUENCE",) FUNCTION = "combine_meshes" CATEGORY = "PHRenderFormer" - def combine_meshes(self, mesh_1, **kwargs): - all_meshes = [] - all_materials = [] - all_transforms = [] + def combine_meshes(self, **kwargs): + # Lists to hold the components for the start and end frames + all_start_meshes, all_start_materials, all_start_transforms = [], [], [] + all_end_meshes, all_end_materials, all_end_transforms = [], [], [] - # Add the first mesh and material - all_meshes.extend(mesh_1["meshes"]) - all_materials.extend(mesh_1["materials"]) - all_transforms.extend(mesh_1["transforms"]) - - # Add subsequent meshes and materials from optional inputs - for key in sorted(kwargs.keys()): - mesh = kwargs.get(key) - if mesh and isinstance(mesh, dict) and "meshes" in mesh and "materials" in mesh and "transforms" in mesh: - all_meshes.extend(mesh["meshes"]) - all_materials.extend(mesh["materials"]) - all_transforms.extend(mesh["transforms"]) - - combined_ph_mesh = {"meshes": all_meshes, "materials": all_materials, "transforms": all_transforms} + # Iterate through all possible mesh inputs + for i in range(1, 9): + mesh_input = kwargs.get(f"mesh_{i}") + if not mesh_input: + continue - return (combined_ph_mesh,) + # Case 1: Input is an animated MESH_SEQUENCE + if isinstance(mesh_input, dict) and "start_meshes" in mesh_input and "end_meshes" in mesh_input: + start_data = mesh_input["start_meshes"] + end_data = mesh_input["end_meshes"] + + all_start_meshes.extend(start_data["meshes"]) + all_start_materials.extend(start_data["materials"]) + all_start_transforms.extend(start_data["transforms"]) + + all_end_meshes.extend(end_data["meshes"]) + all_end_materials.extend(end_data["materials"]) + all_end_transforms.extend(end_data["transforms"]) + + # Case 2: Input is a static MESH object + elif isinstance(mesh_input, dict) and "meshes" in mesh_input: + # For a static mesh, its properties are the same for both start and end frames. + # We do a deepcopy for the end frame to prevent any potential downstream mutation issues. + all_start_meshes.extend(mesh_input["meshes"]) + all_start_materials.extend(mesh_input["materials"]) + all_start_transforms.extend(mesh_input["transforms"]) + + all_end_meshes.extend(copy.deepcopy(mesh_input["meshes"])) + all_end_materials.extend(copy.deepcopy(mesh_input["materials"])) + all_end_transforms.extend(copy.deepcopy(mesh_input["transforms"])) + + # Package the final outputs + start_frame_combined = { + "meshes": all_start_meshes, + "materials": all_start_materials, + "transforms": all_start_transforms + } + + end_frame_combined = { + "meshes": all_end_meshes, + "materials": all_end_materials, + "transforms": all_end_transforms + } + + # This is the final sequence object sent to the Scene Builder + mesh_sequence = { + "start_meshes": start_frame_combined, + "end_meshes": end_frame_combined + } + + return (start_frame_combined, mesh_sequence) + + +class RenderFormerMeshTarget: + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "start_mesh": ("MESH",), + "end_mesh_pos_x": ("FLOAT", {"default": 0.0, "min": -10.0, "max": 10.0, "step": 0.001}), + "end_mesh_pos_y": ("FLOAT", {"default": 0.0, "min": -10.0, "max": 10.0, "step": 0.001}), + "end_mesh_pos_z": ("FLOAT", {"default": 0.0, "min": -10.0, "max": 10.0, "step": 0.001}), + "end_mesh_rot_x": ("FLOAT", {"default": 0.0, "min": -360.0, "max": 360.0, "step": 0.1}), + "end_mesh_rot_y": ("FLOAT", {"default": 0.0, "min": -360.0, "max": 360.0, "step": 0.1}), + "end_mesh_rot_z": ("FLOAT", {"default": 0.0, "min": -360.0, "max": 360.0, "step": 0.1}), + "end_scale": ("FLOAT", {"default": 1.0, "min": 0.1, "max": 10.0, "step": 0.01}), + "end_diffuse_rgb": ("STRING", {"default": "204, 204, 204", "multiline": False}), + "end_specular_rgb": ("STRING", {"default": "25, 25, 25", "multiline": False}), + "end_roughness": ("FLOAT", {"default": 0.7, "min": 0.0, "max": 1.0, "step": 0.01}), + } + } + + RETURN_TYPES = ("MESH_SEQUENCE",) + FUNCTION = "get_mesh_sequence" + CATEGORY = "PHRenderFormer" + + def _parse_color_string(self, color_str, scale=1.0): + if not isinstance(color_str, str): return None + try: + parts = [float(p.strip()) for p in color_str.split(',')] + if len(parts) == 3: return [p / scale for p in parts] + except (ValueError, AttributeError): pass + return None + + def get_mesh_sequence(self, start_mesh, end_mesh_pos_x, end_mesh_pos_y, end_mesh_pos_z, + end_mesh_rot_x, end_mesh_rot_y, end_mesh_rot_z, end_scale, + end_diffuse_rgb, end_specular_rgb, end_roughness): + + if not start_mesh or "meshes" not in start_mesh or not start_mesh["meshes"]: + raise Exception("RenderFormerMeshTarget: Invalid start_mesh input.") + + # --- Create Start and End Data Structures --- + start_meshes_data = [] + end_meshes_data = [] + + # The input `start_mesh` can contain multiple sub-meshes. We need to create a + # start/end pair for each one. + for i in range(len(start_mesh["meshes"])): + # --- Start State --- + # We create a new dictionary for each mesh to ensure they are independent. + start_data = { + "mesh": start_mesh["meshes"][i], + "material": start_mesh["materials"][i], + "transform": start_mesh["transforms"][i], + "ph_uuid": str(uuid.uuid4()) # Add a unique ID for tracking in the combine node + } + start_meshes_data.append(start_data) + + # --- End State --- + # Create a deep copy of the start state to modify for the end frame. + end_data = copy.deepcopy(start_data) + + # Update transform for the end state + end_data["transform"]["translation"] = [end_mesh_pos_x, end_mesh_pos_y, end_mesh_pos_z] + end_data["transform"]["rotation"] = [end_mesh_rot_x, end_mesh_rot_y, end_mesh_rot_z] + end_data["transform"]["scale"] = [end_scale, end_scale, end_scale] + + # Update material for the end state + end_diffuse = self._parse_color_string(end_diffuse_rgb, 255.0) + if end_diffuse: + end_data["material"]["diffuse"] = end_diffuse + + end_specular = self._parse_color_string(end_specular_rgb, 255.0) + if end_specular: + end_data["material"]["specular"] = end_specular + + end_data["material"]["roughness"] = end_roughness + + end_meshes_data.append(end_data) + + # Convert the lists of dicts into the final MESH dictionary format + start_frame_combined = { + "meshes": [d["mesh"] for d in start_meshes_data], + "materials": [d["material"] for d in start_meshes_data], + "transforms": [d["transform"] for d in start_meshes_data] + } + end_frame_combined = { + "meshes": [d["mesh"] for d in end_meshes_data], + "materials": [d["material"] for d in end_meshes_data], + "transforms": [d["transform"] for d in end_meshes_data] + } + + # The output is a dictionary containing both start and end states, + # with each state being a MESH-formatted dictionary. + mesh_output = { + "start_meshes": start_frame_combined, + "end_meshes": end_frame_combined + } + + return (mesh_output,) class RenderFormerGenerator: @@ -1580,6 +1758,7 @@ NODE_CLASS_MAPPINGS = { "RenderFormerFromJSON": RenderFormerFromJSON, "RenderFormerMeshCombine": RenderFormerMeshCombine, "RenderFormerLightingCombine": RenderFormerLightingCombine, + "RenderFormerMeshTarget": RenderFormerMeshTarget, } NODE_DISPLAY_NAME_MAPPINGS = { @@ -1597,4 +1776,5 @@ NODE_DISPLAY_NAME_MAPPINGS = { "RenderFormerFromJSON": "RenderFormer From JSON", "RenderFormerMeshCombine": "RenderFormer Mesh Combine", "RenderFormerLightingCombine": "RenderFormer Lighting Combine", + "RenderFormerMeshTarget": "RenderFormer Mesh Target", } \ No newline at end of file diff --git a/web/js/PHRenderFormer.js b/web/js/PHRenderFormer.js index b5f54cc..c4ac3ff 100644 --- a/web/js/PHRenderFormer.js +++ b/web/js/PHRenderFormer.js @@ -92,6 +92,7 @@ app.registerExtension({ "RenderFormerMeshCombine", "RenderFormerLightingCombine", "RenderFormerLightingTarget", + "RenderFormerMeshTarget", ]; if (node_names.includes(node.comfyClass)) {