Alembic is exporting objects with geometry nodes as empty objects. #89649

Open
opened 2021-07-05 02:43:38 +02:00 by kursad k · 19 comments
Member

System Information
Operating system: Windows 10
Graphics card: 2070

Blender Version
Broken: blender-3.0.0-alpha+master.b73dc36859e0-windows.amd64-release

Short description of error

Alembic export does not seem to understand objects with the geometry nodes modifier properly. The resulting .abc file does not seem to contain the intended object when imported back. Basically it is not evaluating the mesh during export.

image.png

Exact steps for others to reproduce the error

  • Open the attached .blend

  • Select the "GeometryNode" objects from the outliner.

  • Open File/Export/Alembic

  • Make sure you only have "Selected Objects" selected in the options so it only exports the selected objects.

  • Bear in mind we are only exporting the object with the geometry nodes mod, the resulting import should be a single combined mesh

  • Export it

  • Import the .alembic file back

  • You should have an empty "GeometryNode.001" shell object. If the resulting import has more multiple objects then you exported other objects in the scene too, which goes against the basic premise of this test.

_04072021_1929_51.blend

**System Information** Operating system: Windows 10 Graphics card: 2070 **Blender Version** Broken: blender-3.0.0-alpha+master.b73dc36859e0-windows.amd64-release **Short description of error** Alembic export does not seem to understand objects with the geometry nodes modifier properly. The resulting .abc file does not seem to contain the intended object when imported back. Basically it is not evaluating the mesh during export. ![image.png](https://archive.blender.org/developer/F10211471/image.png) **Exact steps for others to reproduce the error** - Open the attached .blend - Select the "GeometryNode" objects from the outliner. - Open File/Export/Alembic - Make sure you only have "Selected Objects" selected in the options so it only exports the selected objects. - Bear in mind we are only exporting the object with the geometry nodes mod, the resulting import should be a single combined mesh - Export it - Import the .alembic file back - You should have an empty "GeometryNode.001" shell object. If the resulting import has more multiple objects then you exported other objects in the scene too, which goes against the basic premise of this test. [_04072021_1929_51.blend](https://archive.blender.org/developer/F10211470/_04072021_1929_51.blend)
Author
Member

Added subscriber: @kursadk

Added subscriber: @kursadk
Member

Added subscriber: @PratikPB2123

Added subscriber: @PratikPB2123
Member

Can confirm with the attached file for version 3.0.0 (2d146b61d8)

Could you please add the steps to recreate the scene?

From scratch I can not reproduce.

Can confirm with the attached file for version 3.0.0 (`2d146b61d8`) Could you please add the steps to recreate the scene? From scratch I can not reproduce.
Member

Changed status from 'Needs Triage' to: 'Needs User Info'

Changed status from 'Needs Triage' to: 'Needs User Info'
Author
Member

You need to use the kind of geometry nodes set up that is in the .blend file There are cases where it exports, and in some other cases it cant. I attached the one that it can't export.

You need to use the kind of geometry nodes set up that is in the .blend file There are cases where it exports, and in some other cases it cant. I attached the one that it can't export.
Member

Changed status from 'Needs User Info' to: 'Needs Triage'

Changed status from 'Needs User Info' to: 'Needs Triage'
Member

Added subscriber: @lichtwerk

Added subscriber: @lichtwerk
Member

Hi @kursadk , I am not able to reproduce from scratch

#89649.blend

@lichtwerk , are you able to reproduce?

Hi @kursadk , I am not able to reproduce from scratch [#89649.blend](https://archive.blender.org/developer/F10213062/T89649.blend) @lichtwerk , are you able to reproduce?
Member

Changed status from 'Needs Triage' to: 'Needs Developer To Reproduce'

Changed status from 'Needs Triage' to: 'Needs Developer To Reproduce'
Member

Added subscribers: @JacquesLucke, @dr.sybren

Added subscribers: @JacquesLucke, @dr.sybren
Member

This is because the source collection is disabled for rendering (Camera icon in the Outliner).
@PratikPB2123 : if you do this in your file it will "fail" as well.

Alembic always evaluates the depsgraph in render mode, so that might make a bit of sense, otoh, this is is not the setting on the object to export, so not sure here actually.
@JacquesLucke , @dr.sybren : is this expected behavior?

This is because the source collection is disabled for rendering (Camera icon in the Outliner). @PratikPB2123 : if you do this in your file it will "fail" as well. Alembic always evaluates the depsgraph in render mode, so that might make a bit of sense, otoh, this is is not the setting on the object to export, so not sure here actually. @JacquesLucke , @dr.sybren : is this expected behavior?
Member

Bear in mind we are only exporting the object with the geometry nodes mod, the resulting import should be a single combined mesh

I'm not entirely sure about this. Note that in geometry nodes the collection is still treated as an instance until it is realized (which doesn't happen here currently). Sometimes it makes sense to create a combined mesh from all the instances and sometimes it doesn't. I'm not sure how alembic generally handles instances.
You could force geometry nodes to combine the instances into a single mesh e.g. by using an Attribute Fill after the Collection Info node. Check the spreadsheet to see what data you are working with. Note, you might run into issues related to #89054 when making the instances real, e.g. the uv layers don't work as you expect anymore.

> Bear in mind we are only exporting the object with the geometry nodes mod, the resulting import should be a single combined mesh I'm not entirely sure about this. Note that in geometry nodes the collection is still treated as an instance until it is realized (which doesn't happen here currently). Sometimes it makes sense to create a combined mesh from all the instances and sometimes it doesn't. I'm not sure how alembic generally handles instances. You could force geometry nodes to combine the instances into a single mesh e.g. by using an Attribute Fill after the Collection Info node. Check the spreadsheet to see what data you are working with. Note, you might run into issues related to #89054 when making the instances real, e.g. the uv layers don't work as you expect anymore.

When rendering the file from the report description, I also don't see anything in the camera view. This means that the Alembic exporter is doing the expected thing. However, when I apply D11820: Alembic export: evaluation mode option and export with Viewport evaluation, things don't export well. I do see a marked-as-invisible Suzanne (the original, invisible object), but the geometry spawned by the geometry nodes is missing. It does contain the transform, though:

ABC
 |--Light
 |--Camera
 |    `--Camera
 |--_TRACK
 |--GeometryNode
 |    |--Plane       ← this is just the XForm
 |    |--Suzanne--1  ← this is just the XForm
 |    `--Torus--1    ← this is just the XForm
 |--Suzanne
 |    `--Suzanne     ← this is the actual mesh
 `--Torus
     `--Torus        ← this is the actual mesh
When rendering the file from the report description, I also don't see anything in the camera view. This means that the Alembic exporter is doing the expected thing. However, when I apply [D11820: Alembic export: evaluation mode option](https://archive.blender.org/developer/D11820) and export with Viewport evaluation, things don't export well. I do see a marked-as-invisible Suzanne (the original, invisible object), but the geometry spawned by the geometry nodes is missing. It does contain the transform, though: ``` ABC |--Light |--Camera | `--Camera |--_TRACK |--GeometryNode | |--Plane ← this is just the XForm | |--Suzanne--1 ← this is just the XForm | `--Torus--1 ← this is just the XForm |--Suzanne | `--Suzanne ← this is the actual mesh `--Torus `--Torus ← this is the actual mesh ```

In #89649#1187539, @JacquesLucke wrote:
You could force geometry nodes to combine the instances into a single mesh e.g. by using an Attribute Fill after the Collection Info node.

So I guess that Geometry Nodes modifier doesn't actually produce an evaluated mesh that contains the entire geometry. Do I guess correctly?

> In #89649#1187539, @JacquesLucke wrote: > You could force geometry nodes to combine the instances into a single mesh e.g. by using an Attribute Fill after the Collection Info node. So I guess that Geometry Nodes modifier doesn't actually produce an evaluated mesh that contains the entire geometry. Do I guess correctly?
Author
Member

In #89649#1187643, @dr.sybren wrote:

In #89649#1187539, @JacquesLucke wrote:
You could force geometry nodes to combine the instances into a single mesh e.g. by using an Attribute Fill after the Collection Info node.

So I guess that Geometry Nodes modifier doesn't actually produce an evaluated mesh that contains the entire geometry. Do I guess correctly?

I can confirm this. See the video below Create duplicate for editing (which I used in the video) comes withthe corrrective shapekeys addon and creates a duplicate by evaluating the graph.

PNxH1vxKth.mp4

> In #89649#1187643, @dr.sybren wrote: >> In #89649#1187539, @JacquesLucke wrote: >> You could force geometry nodes to combine the instances into a single mesh e.g. by using an Attribute Fill after the Collection Info node. > > So I guess that Geometry Nodes modifier doesn't actually produce an evaluated mesh that contains the entire geometry. Do I guess correctly? I can confirm this. See the video below **Create duplicate for editing** (which I used in the video) comes with**the corrrective shapekeys** addon and creates a duplicate by evaluating the graph. [PNxH1vxKth.mp4](https://archive.blender.org/developer/F10213965/PNxH1vxKth.mp4)
Author
Member

In #89649#1187539, @JacquesLucke wrote:

Bear in mind we are only exporting the object with the geometry nodes mod, the resulting import should be a single combined mesh

I'm not entirely sure about this. Note that in geometry nodes the collection is still treated as an instance until it is realized (which doesn't happen here currently). Sometimes it makes sense to create a combined mesh from all the instances and sometimes it doesn't. I'm not sure how alembic generally handles instances.
You could force geometry nodes to combine the instances into a single mesh e.g. by using an Attribute Fill after the Collection Info node. Check the spreadsheet to see what data you are working with. Note, you might run into issues related to #89054 when making the instances real, e.g. the uv layers don't work as you expect anymore.

Well forcing with an additional node destroys the UVs completely. And for multiple meshes (from a collection node ) like that there is not an easy way to get those uvs back on the resulting mesh. See the video please.

zwE1GvL5g9.mp4

> In #89649#1187539, @JacquesLucke wrote: >> Bear in mind we are only exporting the object with the geometry nodes mod, the resulting import should be a single combined mesh > > I'm not entirely sure about this. Note that in geometry nodes the collection is still treated as an instance until it is realized (which doesn't happen here currently). Sometimes it makes sense to create a combined mesh from all the instances and sometimes it doesn't. I'm not sure how alembic generally handles instances. > You could force geometry nodes to combine the instances into a single mesh e.g. by using an Attribute Fill after the Collection Info node. Check the spreadsheet to see what data you are working with. Note, you might run into issues related to #89054 when making the instances real, e.g. the uv layers don't work as you expect anymore. Well forcing with an additional node destroys the UVs completely. And for multiple meshes (from a collection node ) like that there is not an easy way to get those uvs back on the resulting mesh. See the video please. [zwE1GvL5g9.mp4](https://archive.blender.org/developer/F10213967/zwE1GvL5g9.mp4)
Member

So I guess that Geometry Nodes modifier doesn't actually produce an evaluated mesh that contains the entire geometry. Do I guess correctly?

Depends, it can merge everything into a single mesh by using the Realize Instances node. However, since Blender 3.0 we support geometry instances, i.e. the final evaluated state of an object can contain multiple separate instances, whereby the individual meshes are all generated within one object. We added support for eevee and cycles already, but did not have enough time to fix exporters (objects that don't use geometry instances are not affected). Updating exporters is on our list of targets for 3.1 (#93203).

> So I guess that Geometry Nodes modifier doesn't actually produce an evaluated mesh that contains the entire geometry. Do I guess correctly? Depends, it can merge everything into a single mesh by using the `Realize Instances` node. However, since Blender 3.0 we support geometry instances, i.e. the final evaluated state of an object can contain multiple separate instances, whereby the individual meshes are all generated within one object. We added support for eevee and cycles already, but did not have enough time to fix exporters (objects that don't use geometry instances are not affected). Updating exporters is on our list of targets for 3.1 (#93203).

Added subscriber: @Morix

Added subscriber: @Morix

In #89649#1256274, @JacquesLucke wrote:

So I guess that Geometry Nodes modifier doesn't actually produce an evaluated mesh that contains the entire geometry. Do I guess correctly?

Depends, it can merge everything into a single mesh by using the Realize Instances node. However, since Blender 3.0 we support geometry instances, i.e. the final evaluated state of an object can contain multiple separate instances, whereby the individual meshes are all generated within one object. We added support for eevee and cycles already, but did not have enough time to fix exporters (objects that don't use geometry instances are not affected). Updating exporters is on our list of targets for 3.1 (#93203).

Would be awesome to have instances become real meshes (like Animation Nodes) image.png that could be rebaked for us who create 3D animation and content for web3D. I was able to export a bunch of animated instances in alembic (Blender 2.93.2) and then reimport them and then bake them and have separated animations to each object and then export them to glb. Actually, I´m trying to figure out a way to do this in 3.0, is there any workaround combining it with AN maybe? or am I doomed to re do it in 2.93 until release of 3.1? Tnx for an amazing work you guys already do btw

> In #89649#1256274, @JacquesLucke wrote: >> So I guess that Geometry Nodes modifier doesn't actually produce an evaluated mesh that contains the entire geometry. Do I guess correctly? > > Depends, it can merge everything into a single mesh by using the `Realize Instances` node. However, since Blender 3.0 we support geometry instances, i.e. the final evaluated state of an object can contain multiple separate instances, whereby the individual meshes are all generated within one object. We added support for eevee and cycles already, but did not have enough time to fix exporters (objects that don't use geometry instances are not affected). Updating exporters is on our list of targets for 3.1 (#93203). Would be awesome to have instances become real meshes (like Animation Nodes) ![image.png](https://archive.blender.org/developer/F11828727/image.png) that could be rebaked for us who create 3D animation and content for web3D. I was able to export a bunch of animated instances in alembic (Blender 2.93.2) and then reimport them and then bake them and have separated animations to each object and then export them to glb. Actually, I´m trying to figure out a way to do this in 3.0, is there any workaround combining it with AN maybe? or am I doomed to re do it in 2.93 until release of 3.1? Tnx for an amazing work you guys already do btw
Philipp Oeser removed the
Interest
Nodes & Physics
label 2023-02-10 08:44:45 +01:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
6 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#89649
No description provided.