8 # include <Alembic/AbcCoreFactory/All.h>
9 # include <Alembic/AbcGeom/All.h>
15 class AlembicProcedural;
22 struct FaceSetShaderIndexPair {
23 Alembic::AbcGeom::IFaceSet face_set;
28 struct PolyMeshSchemaData {
29 Alembic::AbcGeom::TimeSamplingPtr time_sampling;
31 Alembic::AbcGeom::MeshTopologyVariance topology_variance;
33 Alembic::AbcGeom::IP3fArrayProperty
positions;
34 Alembic::AbcGeom::IInt32ArrayProperty face_indices;
35 Alembic::AbcGeom::IInt32ArrayProperty face_counts;
37 Alembic::AbcGeom::IN3fGeomParam
normals;
42 Alembic::AbcGeom::IV3fArrayProperty velocities;
45 void read_geometry_data(AlembicProcedural *proc,
46 CachedData &cached_data,
47 const PolyMeshSchemaData &
data,
51 struct SubDSchemaData {
52 Alembic::AbcGeom::TimeSamplingPtr time_sampling;
54 Alembic::AbcGeom::MeshTopologyVariance topology_variance;
56 Alembic::AbcGeom::IInt32ArrayProperty face_counts;
57 Alembic::AbcGeom::IInt32ArrayProperty face_indices;
58 Alembic::AbcGeom::IP3fArrayProperty
positions;
60 Alembic::AbcGeom::IInt32ArrayProperty crease_indices;
61 Alembic::AbcGeom::IInt32ArrayProperty crease_lengths;
62 Alembic::AbcGeom::IFloatArrayProperty crease_sharpnesses;
66 Alembic::AbcGeom::IInt32ArrayProperty corner_indices;
67 Alembic::AbcGeom::IFloatArrayProperty corner_sharpnesses;
70 Alembic::AbcGeom::IInt32Property face_varying_interpolate_boundary;
71 Alembic::AbcGeom::IInt32Property face_varying_propagate_corners;
72 Alembic::AbcGeom::IInt32Property interpolate_boundary;
73 Alembic::AbcGeom::IInt32ArrayProperty holes;
74 Alembic::AbcGeom::IStringProperty subdivision_scheme;
75 Alembic::AbcGeom::IV3fArrayProperty velocities;
78 void read_geometry_data(AlembicProcedural *proc,
79 CachedData &cached_data,
80 const SubDSchemaData &
data,
84 struct CurvesSchemaData {
85 Alembic::AbcGeom::TimeSamplingPtr time_sampling;
87 Alembic::AbcGeom::MeshTopologyVariance topology_variance;
89 Alembic::AbcGeom::IP3fArrayProperty
positions;
91 Alembic::AbcGeom::IInt32ArrayProperty num_vertices;
97 Alembic::AbcGeom::IV3fArrayProperty velocities;
99 Alembic::AbcGeom::IFloatArrayProperty position_weights;
100 Alembic::AbcGeom::IN3fGeomParam
normals;
101 Alembic::AbcGeom::IFloatGeomParam widths;
102 Alembic::AbcGeom::IUcharArrayProperty orders;
103 Alembic::AbcGeom::IFloatArrayProperty knots;
108 void read_geometry_data(AlembicProcedural *proc,
109 CachedData &cached_data,
110 const CurvesSchemaData &
data,
114 struct PointsSchemaData {
115 Alembic::AbcGeom::TimeSamplingPtr time_sampling;
118 float default_radius;
121 Alembic::AbcGeom::IP3fArrayProperty
positions;
122 Alembic::AbcGeom::IInt32ArrayProperty num_points;
123 Alembic::AbcGeom::IFloatGeomParam radiuses;
125 Alembic::AbcGeom::IV3fArrayProperty velocities;
128 void read_geometry_data(AlembicProcedural *proc,
129 CachedData &cached_data,
130 const PointsSchemaData &
data,
133 void read_attributes(AlembicProcedural *proc,
135 const Alembic::AbcGeom::ICompoundProperty &arb_geom_params,
136 const Alembic::AbcGeom::IV2fGeomParam &default_uvs_param,
#define CCL_NAMESPACE_END
ccl_gpu_kernel_postfix ccl_global float int int int int ccl_global const float int int int int int int int int int int int int num_samples
MutableSpan< float3 > positions
MutableSpan< float3 > normals