Содержание
- Error evaluating alembic file
- Error evaluating alembic file
- Error evaluating alembic file
- Создаем начальную миграцию с alembic для существующей базы
- Alembic Export Options
- General Options
- Cache Time Ranges
- Attributes
- Attribute Prefix
- Advanced Options
- Callbacks
Error evaluating alembic file
I’m trying to embed an alembic in a digital asset. I can’t figure out how to reference it inside the digital asset. I’ve attached an example.
In that example asset are embedded a test.bgeo and a test.abc.
I can reference the .bgeo with a file node pointing to “opdef../. test.bgeo”.
If I try it with a alembic node pointing to “opdef../. test.abc” I get an “error evaluating alembic”. If i reference the alembic from an external source it works, so I don’t think the alembic itself is the problem.
can someone tell me what’s going on there?
I’m trying to embed an alembic in a digital asset. I can’t figure out how to reference it inside the digital asset. I’ve attached an example.
In that example asset are embedded a test.bgeo and a test.abc.
I can reference the .bgeo with a file node pointing to “opdef. /. test.bgeo”.
If I try it with a alembic node pointing to “opdef. /. test.abc” I get an “error evaluating alembic”. If i reference the alembic from an external source it works, so I don’t think the alembic itself is the problem.
can someone tell me what’s going on there?
This works for me (try the attached). Using an Alembic SOP, I can access the file using
opdefop/abccontent?subd.abc
Note that for this to work, the Alembic has to be saved in Ogawa format.
Источник
Error evaluating alembic file
I have this small, but working pipeline in Maya with Alembic files.
Animation is cached out, and imported back in. Than shading and rendering is set up.
But I cannot seem to import any of these Alembic files into Houdini 15.5.
I get a warning right away about not being able to evaluate the file.
tried every setting in the node, but no luck. Tried to find answers here, but so far no luck.
Is there a certain way to write out Alembic files for Houdini from Maya?
Yes, I am.
This works for other 3D apps, not sure why Houdini is throwing me an error.
We normally have the geo inside a little hierarchy when exported, and is imported back into the same structure.
Maybe that is the problem here?
Edit: Just to add, it’s Maya 2016SP5 on Win7
Edit2: Copied some of the alembic files to the desktop to see what happens, and it works. I can load both Ogawa and hdf5 files from there. So it’s something network related, and it looks like Houdini cannot find the path or something.
One down, one to go 😉
Back at this.
Houdini refuses to import any files, Alembic and/or FBX, from server locations. We checked all relevant rights on folders and files, and there’s no problem there. It doesn’t matter if the files are inside, or outside the project structure.
We tried the File>Import route, and the direct approach of getting a Alembic/File node and loading the file from there.
In all cases we get an error in Houdini.
The File>Import route gives me a ‘Import failed, ZProjectsGoatcachesgoat.abc does not exist’
The direct approach with a node gives a ‘Error: Unable to read file “ZProjectsGoatcachesgoat.abc”’
Also, when browsing to the cache files, they are all grayed out, until you check the sequence box. Than you can select Alembic files with a number in the name.
Источник
Error evaluating alembic file
Can confirm with the attached file for version 3.0.0 ( rB2d146b61d85)
Could you please add the steps to recreate the scene?
From scratch I can not reproduce.
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.
Hi @kursad k (kursadk) , I am not able to reproduce from scratch
This is because the source collection is disabled for rendering (Camera icon in the Outliner).
@Pratik Borhade (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.
@Jacques Lucke (JacquesLucke) , @Sybren A. Stüvel (sybren) : is this expected behavior?
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 T89054 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:
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?
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.
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 T89054 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.
Источник
Создаем начальную миграцию с alembic для существующей базы
Не так давно я пришел на проект, где пользовали SQLAlchermy и Alembic. Но по воле рока так случилось, что alembic подключили после того, как создали в базе кучу объектов. Для тех, кто не в курсе, SQLAlchemy — это библиотека и ORM для питона, а Alembic — это инстумент для работы с миграциями для SQLAlchemy.
Мы захотели научиться делать 2 вещи: создавать базу с нуля прогоняя миграции и генерить миграции автоматом. Для начала создадим начальную миграцию, от которой и будем уже потом генерить последующие миграции автоматом.
Начнем с моделей. В статье я публиковать модели из проекта не буду, а определю довольно простенькие модели пользователей, публикаций и комментов в каком-нибудь блоге. Создадим файл db.py в корне проекта со следующим содержанием.
Для нашего случая можно предполагать, что все эти объекты уже есть в базе.
Подключаем и настраиваем алембик:
В файле alembic.ini указываем адрес базы:
В файле migration/env.py импортируем все модели и указываем target_metadata:
В самом простом случае у нас есть строгое соответствие между объектами, которые есть базе и моделями. В этом случае можно просто создать пустую базу и попросить алебмик создать миграцию для этой базы, на основе моделей и он как раз создаст нужную нам началную миграцию, и уже от этой миграции и плясать, переключившись на основную базу.
Генерим миграцию, не забыв перед этим указать правильное имя базы в настройках.
На выходе получаем migration/versions/8cb9616d5ef0_initial.py :
Теперь возвращаем настройки и вуа-ля, у нас есть initial миграция, от которой алембик будет генерить миграции автоматом и прогоняя этот набор миграций можно создать базу с нуля. Для автотетов тестов, к примеру.
Это был самый простой случай. Теперь рассмотрим ситуцию, когда в базе есть объекты, которые не определены на уровне моделей, к примеру хранимые процедуры, представления или типы. Это был как раз наш случай, и таких объектов в базе было довольно много. Что делать? Я создал дамп схемы и импортировал его в начальной миграции.
Дамп создавал так:
Далее создаем пустую миграцию и импортируем в ней нам дамп.
Теперь как эту миграцию накатывать на уже существующую базу. Здесь нам поможет команда stamp алембика. На просто сделает запись в служебную таблицу алебмика о миграции без реального ее применения.
Готово, теперь мы можем автоматически генерировать миграции и воссоздавать базу в нуля с помощью alembic-а.
Источник
Alembic Export Options
By:
Use these options to control what happens when you select Cache > Alembic Cache > Export All to Alembic or Export Selection to Alembic to create Alembic cache files. See also Create Alembic caches.
General Options
Caches the current Time Slider frame only.
Caches the current Time Slider frame only.
Specifies that your current Render settings determine the Cache time range .
Specifies that the current playback range in your Time Slider determines the Cache time range .
Specifies that the range of frames between (and including) the specified Start and End times determines the Cache time range .
Specifies how often samples are taken during file creation. By default, one sample of your object’s transformations is taken every frame and saved to the Alembic file.
For example, a value of 2 caches the transformations of the current object at every other frame of the Cache Time Range .
Frame relative sample When on, you can specify the number of samples per frame. You can use this option to set frame sub-sampling data that can be interpreted by rendering applications as shutter opening and closing values for motion blur. Low/High Specifies the low and high values for frame relative sampling. Pre Roll Start Frame
Specifies at which frame to start the scene evaluation. Use this option to set the starting frame for time dependent translations that require a run up to the start frame.
Cache Time Ranges
Use the Cache Time Ranges options to specify multiple time ranges and sampling rates in the same Alembic file. For example in a cache file, you can specify a time range that samples every forth frame of an animation, and then specify another time range that samples every frame. You can use Cache Time Ranges to create a file that saves slow motion sequences at a lower sampling rate, while maintaining high sampling rates for full-action sequences.
Enter the first and last frame of the cache time range. You can also use the Start/End controls to set the time range.
Click Add Range+ to create multiple time ranges.
Indicates that a Pre-Roll range is set.
Displays the Frame Relative sample setting for the range.
Attributes
Lets you add dynamic and custom attribute data to the exported Alembic file. To add attributes do one of the following:
- Type the name of the attribute in the Attribute field then click Add .
- Select an attribute in the Channel Box then click From Channel Box .
Added attributes appear in the table under Attribute .
Attribute Prefix
Specify a prefix to filter out the names of attributes you want written to the Alembic file. Type a value in the Attribute Prefix field and click Add . All of the attributes with the specified prefix in their attribute name are added to the Alembic file.
Advanced Options
Outputs frame number information to the Script Editor or output window.
Turn on to exclude the source object’s normal data from the Alembic cache file.
Turn on to exclude any non-renderable nodes or hierarchy, such as hidden objects, from the Alembic file.
Turn on to remove the namespaces associated with the exported objects before they are saved to Alembic file. For example, an object with the namespace taco:foo:bar appears as bar in the Alembic file.
Turn on to write UV data from polygon meshes and subdivision objects to the Alembic file. Only the current UV map is included.
Write Color Sets
Lets you write color per-vertex data from the source polygon meshes to the Alembic file. You can use this data to export motion vector data from the mesh for motion blur effects at render time.
Turn on Write Color Sets , and then add Motion Vector Color Set to the exported attribute list. To do this, in the Attributes section, type motionVectorColorSet beside Attribute , and then click Add .
Write Face Sets
Turn on to save per-face shading group assignments to the Alembic cache. Maya only saves the shading group names to the file. No material information is written to the cache.
When you load the Alembic file, Maya re-assigns shading to the faces if the shading groups exist in the scene. Maya does not create new materials or shading groups.
Whole Frame Geo
When on, geometry data at whole frames is sampled and written to the file. When off (default), geometry data is sampled at sub-frames and written to the file.
Turn on to store the top node in the node hierarchy as world space. By default, these nodes are stored as local space.
Turn on to store the visibility state of objects in the Alembic file. Otherwise, all objects are considered visible.
Filter Euler Rotations
Turn on to filter , X, Y, and Z rotation data with an Euler filter. Euler filtering helps resolve irregularities in rotations especially if X, Y, and Z rotations exceed 360 degrees.
Turn on to export the geometry’s edge and vertex crease information to the Alembic file.
Creates an Alembic cache file that conforms to the HDF5 data model. This option provides backwards compatibility with previous versions of Alembic.
Creates an Ogawa Alembic file. Files created with the Ogawa format are smaller in size and provide better performance than legacy Alembic files.
Callbacks
The recommended way to use callbacks with the Alembic export is to first define a global procedure. For example, in the Script Editor , define the following:
The full MEL callback is:
When each frame is evaluated, the string specified is evaluated as a MEL command. For example, print(«#FRAME#») .
Post Job Callback MEL
When the translation has finished, the string specified is evaluated as a MEL command. For example, print(«Done!») .
Per Frame Callback Python
When each frame is evaluated, the string specified is evaluated as a Python command. For example, print(«#FRAME#») .
Post Job Callback Python
When the translation has finished, the string specified is evaluated as a Python command. For example, print(«Done!») .
Источник
trouble embeding an alembic in a digital asset
1264
1
0
May 11, 2016 10:28 a.m.
Hello
I’m trying to embed an alembic in a digital asset. I can’t figure out how to reference it inside the digital asset. I’ve attached an example.
In that example asset are embedded a test.bgeo and a test.abc.
I can reference the .bgeo with a file node pointing to “opdef../..?test.bgeo”.
If I try it with a alembic node pointing to “opdef../..?test.abc” I get an “error evaluating alembic”. If i reference the alembic from an external source it works, so I don’t think the alembic itself is the problem.
can someone tell me what’s going on there?
Attachments:
martijn_abctest2.hdalc (35.9 KB)
May 12, 2016 1:53 p.m.
mart1jn
HelloI’m trying to embed an alembic in a digital asset. I can’t figure out how to reference it inside the digital asset. I’ve attached an example.
In that example asset are embedded a test.bgeo and a test.abc.
I can reference the .bgeo with a file node pointing to “opdef:../..?test.bgeo”.
If I try it with a alembic node pointing to “opdef:../..?test.abc” I get an “error evaluating alembic”. If i reference the alembic from an external source it works, so I don’t think the alembic itself is the problem.can someone tell me what’s going on there?
This works for me (try the attached). Using an Alembic SOP, I can access the file using
opdefop/abccontent?subd.abc
Note that for this to work, the Alembic has to be saved in Ogawa format.
Attachments:
abc.hda (5.0 KB)
Hello,
I’m having an issue when trying to render a file on a render farm. The file is created by maya 2020 + vray 5. Everything works properly when render locally. However, when using render farm, it’s rendered with all black frames, and the log said that the Alembic file couldn’t be opened. So I supposed that it might be the reason.
I really appreciate if anyone can help me. Thanks in advance!
2022-02-13 10:17:11: 0: STDOUT: HDF5-DIAG: Error detected in HDF5 (1.8.20) thread 0:
2022-02-13 10:17:11: 0: STDOUT: #000: D:devAlembicCMake-hdf5-1.8.20hdf5-1.8.20srcH5F.c line 433 in H5Fis_hdf5(): no file name specified
2022-02-13 10:17:11: 0: STDOUT: major: Invalid arguments to routine
2022-02-13 10:17:11: 0: STDOUT: minor: Out of range
2022-02-13 10:17:11: 0: WARNING: Strict error checking on, ignoring the following unrecognized error or warning. If it is fatal, please email support@thinkboxsoftware.com with the error message.
2022-02-13 10:17:11: 0: STDOUT: Error: Error opening these alembic files:
2022-02-13 10:17:11: 0: STDOUT: [2022/Feb/13|10:17:10] V-Ray: (Estimated time remaining: 0h 0m 0.5s): 57 % completed
2022-02-13 10:17:11: 0: STDOUT: [2022/Feb/13|10:17:11] V-Ray: (Estimated time remaining: 0h 0m 0.5s): 61 % completed
2022-02-13 10:17:11: 0: STDOUT: [2022/Feb/13|10:17:11] V-Ray: (Estimated time remaining: 0h 0m 0.6s): 63 % completed
2022-02-13 10:17:11: 0: STDOUT: [2022/Feb/13|10:17:11] V-Ray: Total time translating scene for V-Ray 0h 0m 1.1s (1.1 s)
2022-02-13 10:17:11: 0: STDOUT: [2022/Feb/13|10:17:11] V-Ray: Rendering.
2022-02-13 10:17:11: 0: STDOUT: [2022/Feb/13|10:17:11] V-Ray: Bitmap manager created.
2022-02-13 10:17:11: 0: STDOUT: [2022/Feb/13|10:17:11] V-Ray: Rendering frames.
2022-02-13 10:17:11: 0: STDOUT: [2022/Feb/13|10:17:11] V-Ray: Updating frame at time 90.00
I just built Alembic 1.7.12
and gave importing particles in Maya a go (implemented with #163 and #202). However, when doing the import Maya instantly crashed.
The crash does not occur in DG evaluation mode and is only reproducable with Parallel evaluation mode.
Stack trace:
OpenMaya.dll!THdependNode::computePlug
DependEngine.dll!TevaluationNode::evaluateDirtyPlugs
DependEngine.dll!TevaluationNode::taskEvaluation
DependEngine.dll!TparallelExecution::evaluateAndVisitChildren
DependEngine.dll!TparallelExecution::evaluateAndSchedule
DependEngine.dll!TparallelExecution::sAddNodesWithinDepthToSet
tbb.dll!tbb::interface7::internal::task_arena_base::internal_execute
DependEngine.dll!TparallelExecution::evaluateImplementation
DependEngine.dll!TevaluationGraph::evaluate
DependEngine.dll!TevaluationManager::evaluate
DependEngine.dll!TcipEvaluationManager::operator=
DependEngine.dll!TdependGraph::setTime
Shared.dll!TfrozenEvaluator::sProcessDownstream
ExtensionLayer.dll!TidleAction::preDoIdleAction
ExtensionLayer.dll!TarrayTdeviceHandlerPtr::size
ExtensionLayer.dll!TperiodElapsedMsg::operator=
ExtensionLayer.dll!TeventHandler::doIdles
ExtensionLayer.dll!TidleLicenseAction::doIdleAction
Qt5Core.dll!QObject::event
Qt5Widgets.dll!QApplicationPrivate::notify_helper
Qt5Widgets.dll!QApplication::notify
ExtensionLayer.dll!TwindowManager::windowPreferencesAreEnabled
Qt5Core.dll!QCoreApplication::notifyInternal2
Qt5Core.dll!QEventDispatcherWin32::event
Qt5Widgets.dll!QApplicationPrivate::notify_helper
Qt5Widgets.dll!QApplication::notify
ExtensionLayer.dll!TwindowManager::windowPreferencesAreEnabled
Qt5Core.dll!QCoreApplication::notifyInternal2
Qt5Core.dll!QCoreApplicationPrivate::sendPostedEvents
qwindows.dll!qt_plugin_query_metadata
Qt5Core.dll!QEventDispatcherWin32::processEvents
USER32.dll!CallWindowProcW
USER32.dll!DispatchMessageW
Qt5Core.dll!QEventDispatcherWin32::processEvents
qwindows.dll!qt_plugin_query_metadata
Qt5Core.dll!QEventLoop::exec
Qt5Core.dll!QCoreApplication::exec
ExtensionLayer.dll!Tapplication::start
maya.exe!<7FF7DFA777A8>
maya.exe!TiteratorWrapperFwd<TscenePartitions::ConstIteratorDescriptor,TiteratorWrapper<TscenePartitions::ConstIteratorDescriptor> >::operator++
This is the .abc
file I quickly exported. (Just created nParticle emitter, select shape, export timeline):
I tried to change in Alembic but when I try to run Alembic current I got error. I’m new in alembic, please tell me why I get this error and how can I solve it?
I can see alembic.ini
in migration folder and also revision identifiers, used by Alembic and everything seems fine.
$alembic current
No handlers could be found for logger "alembic.util"
FAILED: No config file 'alembic.ini' found, or file has no '[alembic]' section
20c921506336_.py
:
"""empty message
Revision ID: 20c921506336
Revises: None
Create Date: 2015-01-30 16:28:38.981023
"""
# revision identifiers, used by Alembic.
revision = '20c921506336'
down_revision = None
from alembic import op
import sqlalchemy as sa
def upgrade():
### commands auto generated by Alembic - please adjust! ###
op.create_table('user',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(length=50), nullable=True),
sa.Column('email', sa.String(length=50), nullable=True),
sa.Column('age', sa.Integer(), nullable=True),
sa.Column('bestfriend_id', sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(['bestfriend_id'], ['user.id'], ),
sa.PrimaryKeyConstraint('id')
)
op.create_index(u'ix_user_age', 'user', ['age'], unique=True)
op.create_index(u'ix_user_email', 'user', ['email'], unique=True)
op.create_index(u'ix_user_name', 'user', ['name'], unique=True)
op.create_table('friends',
sa.Column('user_id', sa.Integer(), nullable=True),
sa.Column('friend_id', sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(['friend_id'], ['user.id'], ),
sa.ForeignKeyConstraint(['user_id'], ['user.id'], )
)
### end Alembic commands ###
def downgrade():
### commands auto generated by Alembic - please adjust! ###
op.drop_table('friends')
op.drop_index(u'ix_user_name', table_name='user')
op.drop_index(u'ix_user_email', table_name='user')
op.drop_index(u'ix_user_age', table_name='user')
op.drop_table('user')
### end Alembic commands ###