USD: Import UsdNurbsCurves as Curves instead of old Curve

Refactor and revamp import and export of `UsdGeomNurbsCurves` prim
objects.

Fixes #130056, among other things.

Summary of changes and enhancements:
- Export:
  - Write out `nurb_weight` attribute as the USD `pointWeights` primvar
  - Properly write out cyclic NURBS curves data (* see notes)
- Import:
  - Import using the new `Curves` datablock rather than the old `Curve`
  - Properly read in cyclic NURBS curves data (* see notes)
  - Tries harder to match incoming knot vector to standard `knots_mode`,
    will use Custom otherwise
  - Support import of all custom primvars and data attached to the prim
    (for use with Geometry Nodes etc.) (* see notes)

Tests were added which check a variety of point count, order, knot_mode,
and cyclic combinations (generated through Geometry Nodes). A small
number of hand-crafted curves were used to test the Custom knots_mode
support on import. Additionally, the tests cover the case when there are
multiple curves defined for a single object.

Notes:
- Cyclic NURBS support is reliant on the current, under-spec'd, USD
  documentation. Changes may be required in the future if/when the USD
  spec is clarified: https://github.com/PixarAnimationStudios/OpenUSD/issues/3740
- Some Cyclic x knots_mode combinations are not correct and would
  require more research to determine how to properly address.
- Custom attributes are not imported for Cyclic NURBS curves yet. Those
  will require additional work to function correctly and are also
  reliant on seeing how the USD spec changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/143970
This commit is contained in:
Jesse Yurkovich
2025-08-27 19:34:46 +02:00
committed by Jesse Yurkovich
parent c61d958872
commit 7111e95527
14 changed files with 5179 additions and 216 deletions

View File

@@ -7,241 +7,433 @@
#include "usd_reader_nurbs.hh"
#include "BKE_curve.hh"
#include "BKE_geometry_set.hh"
#include "BKE_mesh.hh"
#include "BKE_object.hh"
#include "BKE_curves.hh"
#include "BLI_listbase.h"
#include "BLI_offset_indices.hh"
#include "BLI_span.hh"
#include "DNA_curve_types.h"
#include "DNA_object_types.h"
#include "MEM_guardedalloc.h"
#include "DNA_curves_types.h"
#include <pxr/base/vt/types.h>
#include <pxr/usd/usdGeom/curves.h>
#include <pxr/usd/usdGeom/primvarsAPI.h>
static bool set_knots(const pxr::VtDoubleArray &knots, float *&nu_knots)
{
if (knots.empty()) {
return false;
}
/* Skip first and last knots, as they are used for padding. */
const size_t num_knots = knots.size();
nu_knots = MEM_calloc_arrayN<float>(num_knots, __func__);
for (size_t i = 0; i < num_knots; i++) {
nu_knots[i] = float(knots[i]);
}
return true;
}
#include "CLG_log.h"
static CLG_LogRef LOG = {"io.usd"};
namespace blender::io::usd {
void USDNurbsReader::create_object(Main *bmain)
/* Store incoming USD data privately and expose Blender-friendly Spans publicly. */
struct USDCurveData {
private:
pxr::VtArray<pxr::GfVec3f> points_;
pxr::VtArray<int> counts_;
pxr::VtArray<int> orders_;
pxr::VtArray<double> knots_;
pxr::VtArray<double> weights_;
pxr::VtArray<float> widths_;
pxr::VtArray<pxr::GfVec3f> velocities_;
public:
Span<float3> points() const
{
return Span(points_.cdata(), points_.size()).cast<float3>();
}
Span<int> counts() const
{
return Span(counts_.cdata(), counts_.size());
}
Span<int> orders() const
{
return Span(orders_.cdata(), orders_.size());
}
Span<double> knots() const
{
return Span(knots_.cdata(), knots_.size());
}
Span<double> weights() const
{
return Span(weights_.cdata(), weights_.size());
}
Span<float> widths() const
{
return Span(widths_.cdata(), widths_.size());
}
Span<float3> velocities() const
{
return Span(velocities_.cdata(), velocities_.size()).cast<float3>();
}
bool load(const pxr::UsdGeomNurbsCurves &curve_prim, const pxr::UsdTimeCode time)
{
curve_prim.GetCurveVertexCountsAttr().Get(&counts_, time);
curve_prim.GetOrderAttr().Get(&orders_, time);
if (counts_.size() != orders_.size()) {
CLOG_WARN(&LOG,
"Curve vertex and order size mismatch for NURBS prim %s",
curve_prim.GetPrim().GetPrimPath().GetAsString().c_str());
return false;
}
if (std::any_of(counts_.cbegin(), counts_.cend(), [](int value) { return value < 0; }) ||
std::any_of(orders_.cbegin(), orders_.cend(), [](int value) { return value < 0; }))
{
CLOG_WARN(&LOG,
"Invalid curve vertex count or order value detected for NURBS prim %s",
curve_prim.GetPrim().GetPrimPath().GetAsString().c_str());
return false;
}
curve_prim.GetPointsAttr().Get(&points_, time);
curve_prim.GetKnotsAttr().Get(&knots_, time);
curve_prim.GetWidthsAttr().Get(&widths_, time);
curve_prim.GetPointWeightsAttr().Get(&weights_, time);
if (!weights_.empty() && points_.size() != weights_.size()) {
CLOG_WARN(&LOG,
"Invalid curve weights count for NURBS prim %s",
curve_prim.GetPrim().GetPrimPath().GetAsString().c_str());
/* Only clear, but continue to load other curve data. */
weights_.clear();
}
curve_prim.GetVelocitiesAttr().Get(&velocities_, time);
if (!velocities_.empty() && points_.size() != velocities_.size()) {
CLOG_WARN(&LOG,
"Invalid curve velocity count for NURBS prim %s",
curve_prim.GetPrim().GetPrimPath().GetAsString().c_str());
/* Only clear, but continue to load other curve data. */
velocities_.clear();
}
return true;
}
};
struct CurveData {
Array<int> blender_offsets;
Array<int> usd_offsets;
Array<int> usd_knot_offsets;
Array<bool> is_cyclic;
};
static KnotsMode determine_knots_mode(const Span<double> usd_knots,
const int order,
const bool is_cyclic)
{
Curve *cu = BKE_curve_add(bmain, name_.c_str(), OB_CURVES_LEGACY);
/* TODO: We have to convert knot values to float for usage in Blender APIs. Look into making
* calculate_multiplicity_sequence a template. */
Array<float> blender_knots(usd_knots.size());
for (const int knot_i : usd_knots.index_range()) {
blender_knots[knot_i] = float(usd_knots[knot_i]);
}
cu->flag |= CU_3D;
cu->actvert = CU_ACT_NONE;
cu->resolu = 2;
Vector<int> multiplicity = bke::curves::nurbs::calculate_multiplicity_sequence(blender_knots);
const int head = multiplicity.first();
const int tail = multiplicity.last();
const Span<int> inner = multiplicity.as_span().slice(1, multiplicity.size() - 2);
object_ = BKE_object_add_only_object(bmain, OB_CURVES_LEGACY, name_.c_str());
object_->data = cu;
/* If the knot vector starts and ends with full multiplicity knots, then this is classified as
* Blender's endpoint mode. */
const int degree = order - 1;
const bool is_endpoint = is_cyclic ? (tail >= degree) : (head == order && tail >= order);
/* If all of the inner multiplicities are equal to the degree, then this is a Bezier curve. */
if (degree > 1 &&
std::all_of(inner.begin(), inner.end(), [degree](int value) { return value == degree; }))
{
return is_endpoint ? NURBS_KNOT_MODE_ENDPOINT_BEZIER : NURBS_KNOT_MODE_BEZIER;
}
if (is_endpoint) {
return NURBS_KNOT_MODE_ENDPOINT;
}
/* If all of the inner knot values are equally spaced, then this is a regular/uniform curve and
* we assume that our normal knot mode will match. Use custom knots otherwise. */
const Span<float> inner_values = blender_knots.as_span().drop_front(head).drop_back(tail);
if (inner_values.size() > 2) {
const float delta = inner_values[1] - inner_values[0];
if (delta < 0) {
/* Invalid knot vector. Use normal mode. */
return NURBS_KNOT_MODE_NORMAL;
}
for (int i = 2; i < inner.size(); i++) {
if (inner_values[i] - inner_values[i - 1] != delta) {
/* The knot values are not equally spaced. Use custom knots. */
return NURBS_KNOT_MODE_CUSTOM;
}
}
}
/* Nothing matches. Use normal mode. */
return NURBS_KNOT_MODE_NORMAL;
}
void USDNurbsReader::read_object_data(Main *bmain, const pxr::UsdTimeCode time)
static CurveData calc_curve_offsets(const Span<float3> usd_points,
const Span<int> usd_counts,
const Span<int> usd_orders,
const Span<double> usd_knots)
{
Curve *cu = (Curve *)object_->data;
read_curve_sample(cu, time);
CurveData data;
data.blender_offsets.reinitialize(usd_counts.size() + 1);
data.usd_offsets.reinitialize(usd_counts.size() + 1);
data.usd_knot_offsets.reinitialize(usd_counts.size() + 1);
data.is_cyclic.reinitialize(usd_counts.size());
if (curve_prim_.GetPointsAttr().ValueMightBeTimeVarying()) {
add_cache_modifier();
}
Span<float3> usd_remaining_points = usd_points;
Span<double> usd_remaining_knots = usd_knots;
USDXformReader::read_object_data(bmain, time);
}
void USDNurbsReader::read_curve_sample(Curve *cu, const pxr::UsdTimeCode time)
{
pxr::UsdAttribute widthsAttr = curve_prim_.GetWidthsAttr();
pxr::UsdAttribute vertexAttr = curve_prim_.GetCurveVertexCountsAttr();
pxr::UsdAttribute pointsAttr = curve_prim_.GetPointsAttr();
pxr::VtIntArray usdCounts;
vertexAttr.Get(&usdCounts, time);
pxr::VtVec3fArray usdPoints;
pointsAttr.Get(&usdPoints, time);
pxr::VtFloatArray usdWidths;
widthsAttr.Get(&usdWidths, time);
pxr::VtIntArray orders;
curve_prim_.GetOrderAttr().Get(&orders, time);
pxr::VtDoubleArray knots;
curve_prim_.GetKnotsAttr().Get(&knots, time);
pxr::VtVec3fArray usdNormals;
curve_prim_.GetNormalsAttr().Get(&usdNormals, time);
/* If normals, extrude, else bevel.
* Perhaps to be replaced by Blender USD Schema. */
if (!usdNormals.empty()) {
/* Set extrusion to 1. */
cu->extrude = 1.0f;
}
else {
/* Set bevel depth to 1. */
cu->bevel_radius = 1.0f;
}
size_t idx = 0;
for (size_t i = 0; i < usdCounts.size(); i++) {
const int num_verts = usdCounts[i];
Nurb *nu = MEM_callocN<Nurb>(__func__);
nu->flag = CU_SMOOTH;
nu->type = CU_NURBS;
nu->resolu = cu->resolu;
nu->resolv = cu->resolv;
nu->pntsu = num_verts;
nu->pntsv = 1;
if (i < orders.size()) {
nu->orderu = short(orders[i]);
for (const int curve_i : usd_counts.index_range()) {
const int points_num = usd_counts[curve_i];
const int knots_num = points_num + usd_orders[curve_i];
const int degree = usd_orders[curve_i] - 1;
const Span<double> usd_current_knots = usd_remaining_knots.take_front(knots_num);
const Span<float3> usd_current_points = usd_remaining_points.take_front(points_num);
if (knots_num < 4 || knots_num != usd_current_knots.size()) {
data.is_cyclic[curve_i] = false;
}
else {
nu->orderu = 4;
nu->orderv = 4;
data.is_cyclic[curve_i] = usd_current_points.take_front(degree) ==
usd_current_points.take_back(degree);
}
/* TODO(makowalski): investigate setting Cyclic U and Endpoint U options. */
#if 0
if (knots.size() > 3) {
if ((knots[0] == knots[1]) && (knots[knots.size()] == knots[knots.size() - 1])) {
nu->flagu |= CU_NURB_ENDPOINT;
}
else {
nu->flagu |= CU_NURB_CYCLIC;
}
}
#endif
int blender_count = usd_counts[curve_i];
float weight = 1.0f;
nu->bp = MEM_calloc_arrayN<BPoint>(nu->pntsu, __func__);
BPoint *bp = nu->bp;
for (int j = 0; j < nu->pntsu; j++, bp++, idx++) {
bp->vec[0] = usdPoints[idx][0];
bp->vec[1] = usdPoints[idx][1];
bp->vec[2] = usdPoints[idx][2];
bp->vec[3] = weight;
bp->f1 = SELECT;
bp->weight = weight;
float radius = 0.1f;
if (idx < usdWidths.size()) {
radius = usdWidths[idx] / 2.0f;
}
bp->radius = radius;
/* Account for any repeated degree(order - 1) number of points from USD cyclic curves which
* Blender does not use internally. */
if (data.is_cyclic[curve_i]) {
blender_count -= degree;
}
if (!set_knots(knots, nu->knotsu)) {
BKE_nurb_knot_calc_u(nu);
}
data.blender_offsets[curve_i] = blender_count;
data.usd_offsets[curve_i] = points_num;
data.usd_knot_offsets[curve_i] = knots_num;
BLI_addtail(BKE_curve_nurbs_get(cu), nu);
/* Move to next sequence of values. */
usd_remaining_points = usd_remaining_points.drop_front(points_num);
usd_remaining_knots = usd_remaining_knots.drop_front(knots_num);
}
offset_indices::accumulate_counts_to_offsets(data.blender_offsets);
offset_indices::accumulate_counts_to_offsets(data.usd_offsets);
offset_indices::accumulate_counts_to_offsets(data.usd_knot_offsets);
return data;
}
void USDNurbsReader::read_geometry(bke::GeometrySet &geometry_set,
const USDMeshReadParams params,
const char **r_err_str)
/** Returns true if the number of curves or the number of curve points in each curve differ. */
static bool curves_topology_changed(const bke::CurvesGeometry &curves, const Span<int> usd_offsets)
{
BLI_assert(geometry_set.has_mesh());
Mesh *new_mesh = read_mesh(nullptr, params, r_err_str);
geometry_set.replace_mesh(new_mesh);
if (curves.offsets() != usd_offsets) {
return true;
}
return false;
}
Mesh *USDNurbsReader::read_mesh(Mesh * /*existing_mesh*/,
const USDMeshReadParams params,
const char ** /*r_err_str*/)
static IndexRange get_usd_points_range_de_dup(IndexRange blender_points_range,
IndexRange usd_points_range)
{
pxr::UsdGeomCurves curve_prim(prim_);
/* Take from the front of USD's range to exclude any duplicates at the end. */
return usd_points_range.take_front(blender_points_range.size());
};
pxr::UsdAttribute widthsAttr = curve_prim.GetWidthsAttr();
pxr::UsdAttribute vertexAttr = curve_prim.GetCurveVertexCountsAttr();
pxr::UsdAttribute pointsAttr = curve_prim.GetPointsAttr();
bool USDNurbsReader::is_animated() const
{
if (curve_prim_.GetPointsAttr().ValueMightBeTimeVarying() ||
curve_prim_.GetWidthsAttr().ValueMightBeTimeVarying() ||
curve_prim_.GetPointWeightsAttr().ValueMightBeTimeVarying())
{
return true;
}
pxr::VtIntArray usdCounts;
pxr::UsdGeomPrimvarsAPI pv_api(curve_prim_);
for (const pxr::UsdGeomPrimvar &pv : pv_api.GetPrimvarsWithValues()) {
if (pv.ValueMightBeTimeVarying()) {
return true;
}
}
vertexAttr.Get(&usdCounts, params.motion_sample_time);
int num_subcurves = usdCounts.size();
return false;
}
pxr::VtVec3fArray usdPoints;
pointsAttr.Get(&usdPoints, params.motion_sample_time);
void USDNurbsReader::read_curve_sample(Curves *curves_id, const pxr::UsdTimeCode time)
{
USDCurveData usd_data;
if (!usd_data.load(curve_prim_, time)) {
return;
}
int vertex_idx = 0;
int curve_idx;
Curve *curve = static_cast<Curve *>(object_->data);
const Span<float3> usd_points = usd_data.points();
const Span<int> usd_counts = usd_data.counts();
const Span<int> usd_orders = usd_data.orders();
const Span<double> usd_knots = usd_data.knots();
const Span<double> usd_weights = usd_data.weights();
const Span<float3> usd_velocities = usd_data.velocities();
const int curve_count = BLI_listbase_count(&curve->nurb);
bool same_topology = curve_count == num_subcurves;
/* Calculate and set the Curves topology. */
CurveData data = calc_curve_offsets(usd_points, usd_counts, usd_orders, usd_knots);
if (same_topology) {
Nurb *nurbs = static_cast<Nurb *>(curve->nurb.first);
for (curve_idx = 0; nurbs; nurbs = nurbs->next, curve_idx++) {
const int num_in_usd = usdCounts[curve_idx];
const int num_in_blender = nurbs->pntsu;
bke::CurvesGeometry &curves = curves_id->geometry.wrap();
if (curves_topology_changed(curves, data.blender_offsets)) {
curves.resize(data.blender_offsets.last(), usd_counts.size());
curves.offsets_for_write().copy_from(data.blender_offsets);
curves.fill_curve_types(CurveType::CURVE_TYPE_NURBS);
}
if (num_in_usd != num_in_blender) {
same_topology = false;
break;
/* NOTE: USD contains duplicated points for periodic(cyclic) curves. The indices into each curve
* will differ from what Blender expects so we need to maintain and use separate offsets for
* each. A side effect of this dissonance is that all primvar/attribute loading needs to be
* handled in a special manner vs. what might be seen in our other USD readers. */
const OffsetIndices blender_points_by_curve = curves.points_by_curve();
const OffsetIndices usd_points_by_curve = OffsetIndices<int>(data.usd_offsets,
offset_indices::NoSortCheck{});
const OffsetIndices usd_knots_by_curve = OffsetIndices<int>(data.usd_knot_offsets,
offset_indices::NoSortCheck{});
/* TODO: We cannot read custom primvars for cyclic curves at the moment. */
const bool can_read_primvars = std::all_of(
data.is_cyclic.begin(), data.is_cyclic.end(), [](bool item) { return item == false; });
/* Set all curve data. */
MutableSpan<float3> curves_positions = curves.positions_for_write();
for (const int curve_i : blender_points_by_curve.index_range()) {
const IndexRange blender_points_range = blender_points_by_curve[curve_i];
const IndexRange usd_points_range_de_dup = get_usd_points_range_de_dup(
blender_points_range, usd_points_by_curve[curve_i]);
curves_positions.slice(blender_points_range)
.copy_from(usd_points.slice(usd_points_range_de_dup));
}
MutableSpan<bool> curves_cyclic = curves.cyclic_for_write();
curves_cyclic.copy_from(data.is_cyclic);
MutableSpan<int8_t> curves_nurbs_orders = curves.nurbs_orders_for_write();
for (const int curve_i : blender_points_by_curve.index_range()) {
curves_nurbs_orders[curve_i] = int8_t(usd_orders[curve_i]);
}
MutableSpan<int8_t> curves_knots_mode = curves.nurbs_knots_modes_for_write();
for (const int curve_i : blender_points_by_curve.index_range()) {
const IndexRange usd_knots_range = usd_knots_by_curve[curve_i];
curves_knots_mode[curve_i] = determine_knots_mode(
usd_knots.slice(usd_knots_range), usd_orders[curve_i], data.is_cyclic[curve_i]);
}
/* Load in the optional weights. */
if (!usd_weights.is_empty()) {
MutableSpan<float> curves_weights = curves.nurbs_weights_for_write();
for (const int curve_i : blender_points_by_curve.index_range()) {
const IndexRange blender_points_range = blender_points_by_curve[curve_i];
const IndexRange usd_points_range_de_dup = get_usd_points_range_de_dup(
blender_points_range, usd_points_by_curve[curve_i]);
const Span<double> usd_weights_de_dup = usd_weights.slice(usd_points_range_de_dup);
int64_t usd_point_i = 0;
for (const int point_i : blender_points_range) {
curves_weights[point_i] = float(usd_weights_de_dup[usd_point_i]);
usd_point_i++;
}
}
}
if (!same_topology) {
BKE_nurbList_free(&curve->nurb);
read_curve_sample(curve, params.motion_sample_time);
/* Load in the optional velocities. */
if (!usd_velocities.is_empty()) {
bke::MutableAttributeAccessor attributes = curves.attributes_for_write();
bke::SpanAttributeWriter<float3> curves_velocity =
attributes.lookup_or_add_for_write_only_span<float3>("velocity", bke::AttrDomain::Point);
for (const int curve_i : blender_points_by_curve.index_range()) {
const IndexRange blender_points_range = blender_points_by_curve[curve_i];
const IndexRange usd_points_range_de_dup = get_usd_points_range_de_dup(
blender_points_range, usd_points_by_curve[curve_i]);
curves_velocity.span.slice(blender_points_range)
.copy_from(usd_velocities.slice(usd_points_range_de_dup));
}
curves_velocity.finish();
}
else {
Nurb *nurbs = static_cast<Nurb *>(curve->nurb.first);
for (curve_idx = 0; nurbs; nurbs = nurbs->next, curve_idx++) {
const int totpoint = usdCounts[curve_idx];
if (nurbs->bp) {
BPoint *point = nurbs->bp;
/* Once all of the curves metadata (orders, cyclic, knots_mode) has been set, we can prepare
* Blender for any custom knots that need to be loaded. */
MutableSpan<float> blender_custom_knots;
OffsetIndices<int> blender_knots_by_curve;
for (const int curve_i : curves.curves_range()) {
if (curves_knots_mode[curve_i] != NURBS_KNOT_MODE_CUSTOM) {
continue;
}
for (int i = 0; i < totpoint; i++, point++, vertex_idx++) {
point->vec[0] = usdPoints[vertex_idx][0];
point->vec[1] = usdPoints[vertex_idx][1];
point->vec[2] = usdPoints[vertex_idx][2];
/* If this is our first time through, we need to update Blender's topology data to prepare for
* the incoming custom knots. */
if (blender_custom_knots.is_empty()) {
curves.nurbs_custom_knots_update_size();
blender_knots_by_curve = curves.nurbs_custom_knots_by_curve();
blender_custom_knots = curves.nurbs_custom_knots_for_write();
}
const IndexRange blender_knots_range = blender_knots_by_curve[curve_i];
const IndexRange usd_knots_range = usd_knots_by_curve[curve_i];
const Span<double> usd_knots_values = usd_knots.slice(usd_knots_range);
MutableSpan<float> blender_knots = blender_custom_knots.slice(blender_knots_range);
int usd_knot_i = 0;
for (float &blender_knot : blender_knots) {
blender_knot = usd_knots_values[usd_knot_i] > 0.0 ? float(usd_knots_values[usd_knot_i]) : 0;
usd_knot_i++;
}
}
/* Curve widths. */
const Span<float> usd_widths = usd_data.widths();
if (!usd_widths.is_empty()) {
MutableSpan<float> radii = curves.radius_for_write();
const pxr::TfToken widths_interp = curve_prim_.GetWidthsInterpolation();
if (widths_interp == pxr::UsdGeomTokens->constant || usd_widths.size() == 1) {
radii.fill(usd_widths[0] / 2.0f);
}
else if (widths_interp == pxr::UsdGeomTokens->varying) {
int point_offset = 0;
for (const int curve_i : curves.curves_range()) {
const float usd_curve_radius = usd_widths[curve_i] / 2.0f;
int point_count = usd_counts[curve_i];
if (curves_cyclic[curve_i]) {
point_count -= usd_orders[curve_i] - 1;
}
for (const int point : IndexRange(point_count)) {
radii[point_offset + point] = usd_curve_radius;
}
}
else if (nurbs->bezt) {
BezTriple *bezier = nurbs->bezt;
for (int i = 0; i < totpoint; i++, bezier++, vertex_idx++) {
bezier->vec[1][0] = usdPoints[vertex_idx][0];
bezier->vec[1][1] = usdPoints[vertex_idx][1];
bezier->vec[1][2] = usdPoints[vertex_idx][2];
point_offset += point_count;
}
}
else if (widths_interp == pxr::UsdGeomTokens->vertex) {
for (const int curve_i : curves.curves_range()) {
const IndexRange blender_points_range = blender_points_by_curve[curve_i];
const IndexRange usd_points_range = usd_points_by_curve[curve_i];
/* Take from the front of USD's range to exclude any duplicates at the end. */
const IndexRange usd_points_range_de_dup = usd_points_range.take_front(
blender_points_range.size());
const Span<float> usd_widths_de_dup = usd_widths.slice(usd_points_range_de_dup);
int64_t usd_point_i = 0;
for (const int point_i : blender_points_range) {
radii[point_i] = usd_widths_de_dup[usd_point_i] / 2.0f;
usd_point_i++;
}
}
}
}
return BKE_mesh_new_nomain_from_curve(object_);
if (can_read_primvars) {
this->read_custom_data(curves, time);
}
}
} // namespace blender::io::usd

View File

@@ -8,23 +8,29 @@
#pragma once
#include "usd.hh"
#include "usd_reader_curve.hh"
#include "usd_reader_geom.hh"
#include <pxr/usd/usd/prim.h>
#include <pxr/usd/usdGeom/nurbsCurves.h>
struct Curve;
struct Curves;
namespace blender::bke {
class CurvesGeometry;
} // namespace blender::bke
namespace blender::io::usd {
class USDNurbsReader : public USDGeomReader {
protected:
class USDNurbsReader : public USDCurvesReader {
private:
pxr::UsdGeomNurbsCurves curve_prim_;
public:
USDNurbsReader(const pxr::UsdPrim &prim,
const USDImportParams &import_params,
const ImportSettings &settings)
: USDGeomReader(prim, import_params, settings), curve_prim_(prim)
: USDCurvesReader(prim, import_params, settings), curve_prim_(prim)
{
}
@@ -33,17 +39,8 @@ class USDNurbsReader : public USDGeomReader {
return bool(curve_prim_);
}
void create_object(Main *bmain) override;
void read_object_data(Main *bmain, pxr::UsdTimeCode time) override;
void read_curve_sample(Curve *cu, pxr::UsdTimeCode time);
void read_geometry(bke::GeometrySet &geometry_set,
USDMeshReadParams params,
const char **r_err_str) override;
private:
Mesh *read_mesh(struct Mesh *existing_mesh, USDMeshReadParams params, const char **r_err_str);
void read_curve_sample(Curves *curves_id, pxr::UsdTimeCode time) override;
bool is_animated() const override;
};
} // namespace blender::io::usd

View File

@@ -270,6 +270,7 @@ static void populate_curve_props_for_nurbs(const bke::CurvesGeometry &curves,
pxr::VtIntArray &control_point_counts,
pxr::VtArray<float> &widths,
pxr::VtArray<double> &knots,
pxr::VtArray<double> &weights,
pxr::VtArray<int> &orders,
pxr::TfToken &interpolation,
const bool is_cyclic)
@@ -281,31 +282,54 @@ static void populate_curve_props_for_nurbs(const bke::CurvesGeometry &curves,
const Span<float3> positions = curves.positions();
const Span<float> custom_knots = curves.nurbs_custom_knots();
const std::optional<Span<float>> nurbs_weights = curves.nurbs_weights();
VArray<int8_t> geom_orders = curves.nurbs_orders();
VArray<int8_t> knots_modes = curves.nurbs_knots_modes();
const VArray<float> radii = curves.radius();
const OffsetIndices points_by_curve = curves.points_by_curve();
const OffsetIndices custom_knots_by_curve = curves.nurbs_custom_knots_by_curve();
for (const int i_curve : curves.curves_range()) {
const IndexRange points = points_by_curve[i_curve];
const size_t curr_vert_num = verts.size();
for (const int i_point : points) {
verts.push_back(
pxr::GfVec3f(positions[i_point][0], positions[i_point][1], positions[i_point][2]));
widths.push_back(radii[i_point] * 2.0f);
}
const int tot_points = points.size();
control_point_counts[i_curve] = tot_points;
if (nurbs_weights) {
for (const int i_point : points) {
weights.push_back((*nurbs_weights)[i_point]);
}
}
/* Repeat the first degree(order - 1) number of points and weights if curve is cyclic. */
if (is_cyclic) {
for (const int i_point : points.take_front(geom_orders[i_curve] - 1)) {
verts.push_back(
pxr::GfVec3f(positions[i_point][0], positions[i_point][1], positions[i_point][2]));
widths.push_back(radii[i_point] * 2.0f);
if (nurbs_weights) {
weights.push_back((*nurbs_weights)[i_point]);
}
}
}
const int tot_blender_points = int(points.size());
const int tot_usd_points = int(verts.size() - curr_vert_num);
control_point_counts[i_curve] = tot_usd_points;
const int8_t order = geom_orders[i_curve];
orders[i_curve] = int(geom_orders[i_curve]);
const KnotsMode mode = KnotsMode(knots_modes[i_curve]);
const int knots_num = bke::curves::nurbs::knots_num(tot_points, order, is_cyclic);
const int knots_num = bke::curves::nurbs::knots_num(tot_blender_points, order, is_cyclic);
Array<float> temp_knots(knots_num);
bke::curves::nurbs::load_curve_knots(mode,
tot_points,
tot_blender_points,
order,
is_cyclic,
custom_knots_by_curve[i_curve],
@@ -333,20 +357,22 @@ static void populate_curve_props_for_nurbs(const bke::CurvesGeometry &curves,
}
}
populate_curve_widths(curves, widths);
interpolation = pxr::UsdGeomTokens->vertex;
}
void USDCurvesWriter::set_writer_attributes_for_nurbs(
const pxr::UsdGeomNurbsCurves &usd_nurbs_curves,
const pxr::VtArray<double> &knots,
const pxr::VtArray<int> &orders,
pxr::VtArray<double> &knots,
pxr::VtArray<double> &weights,
pxr::VtArray<int> &orders,
const pxr::UsdTimeCode time)
{
pxr::UsdAttribute attr_knots = usd_nurbs_curves.CreateKnotsAttr(pxr::VtValue(), true);
usd_value_writer_.SetAttribute(attr_knots, pxr::VtValue(knots), time);
set_attribute(attr_knots, knots, time, usd_value_writer_);
pxr::UsdAttribute attr_weights = usd_nurbs_curves.CreatePointWeightsAttr(pxr::VtValue(), true);
set_attribute(attr_weights, weights, time, usd_value_writer_);
pxr::UsdAttribute attr_order = usd_nurbs_curves.CreateOrderAttr(pxr::VtValue(), true);
usd_value_writer_.SetAttribute(attr_order, pxr::VtValue(orders), time);
set_attribute(attr_order, orders, time, usd_value_writer_);
}
void USDCurvesWriter::set_writer_attributes(pxr::UsdGeomCurves &usd_curves,
@@ -618,17 +644,24 @@ void USDCurvesWriter::do_write(HierarchyContext &context)
break;
case CURVE_TYPE_NURBS: {
pxr::VtArray<double> knots;
pxr::VtArray<double> weights;
pxr::VtArray<int> orders;
orders.resize(curves.curves_num());
usd_nurbs_curves = pxr::UsdGeomNurbsCurves::Define(usd_export_context_.stage,
usd_export_context_.usd_path);
usd_curves = &usd_nurbs_curves;
populate_curve_props_for_nurbs(
curves, verts, control_point_counts, widths, knots, orders, interpolation, is_cyclic);
populate_curve_props_for_nurbs(curves,
verts,
control_point_counts,
widths,
knots,
weights,
orders,
interpolation,
is_cyclic);
set_writer_attributes_for_nurbs(usd_nurbs_curves, knots, orders, time);
set_writer_attributes_for_nurbs(usd_nurbs_curves, knots, weights, orders, time);
break;
}
@@ -641,8 +674,11 @@ void USDCurvesWriter::do_write(HierarchyContext &context)
this->assign_materials(context, *usd_curves);
this->write_velocities(curves, *usd_curves);
this->write_custom_data(curves, *usd_curves);
/* TODO: We cannot write custom privars for cyclic NURBS curves at the moment. */
if (!is_cyclic || (is_cyclic && curve_type != CURVE_TYPE_NURBS)) {
this->write_velocities(curves, *usd_curves);
this->write_custom_data(curves, *usd_curves);
}
auto prim = usd_curves->GetPrim();
write_id_properties(prim, curves_id->id, time);

View File

@@ -40,8 +40,9 @@ class USDCurvesWriter final : public USDAbstractWriter {
const pxr::TfToken interpolation);
void set_writer_attributes_for_nurbs(const pxr::UsdGeomNurbsCurves &usd_nurbs_curves,
const pxr::VtArray<double> &knots,
const pxr::VtArray<int> &orders,
pxr::VtArray<double> &knots,
pxr::VtArray<double> &weights,
pxr::VtArray<int> &orders,
const pxr::UsdTimeCode time);
void write_generic_data(const bke::CurvesGeometry &curves,

View File

@@ -0,0 +1,143 @@
#usda 1.0
(
defaultPrim = "root"
doc = "HAND CRAFTED!"
metersPerUnit = 1
upAxis = "Z"
)
def Xform "root"(
customData = {
dictionary Blender = {
bool generated = 1
}
}
)
{
def Xform "NC62Custom"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (0, 0, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-1.005, 0.45090014, -0.024999999), (0.62499994, 0.915, 0.024999999)]
double[] knots = [0, 1, 2.1, 4.3, 8.7, 17.5, 35.1, 40]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.05, 0.06] (
interpolation = "vertex"
)
}
}
def Xform "NC63Custom"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (0, 1, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-1.005, 0.45090014, -0.024999999), (0.62499994, 0.915, 0.024999999)]
double[] knots = [0, 1, 3, 9, 27, 28, 30, 31, 32]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.05, 0.06] (
interpolation = "vertex"
)
}
}
def Xform "NC64Custom"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (0, 2, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-1.005, 0.45090014, -0.024999999), (0.62499994, 0.915, 0.024999999)]
double[] knots = [0, 0, 0, 1, 2, 6, 8, 10, 10, 10]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.05, 0.06] (
interpolation = "vertex"
)
}
}
def Xform "C52Custom"
{
token visibility = "invisible"
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (4, 0, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-1.005, -0.01, -0.024999999), (1.025, 0.915, 0.024999999)]
double[] knots = [0, 1, 2, 8, 12, 13, 14, 15]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0), (-1, 0.7, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01] (
interpolation = "vertex"
)
}
}
def Xform "C53Custom"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (4, 1, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [7]
float3[] extent = [(-1.005, -0.01, -0.024999999), (1.025, 0.915, 0.024999999)]
double[] knots = [0, 0, 1, 1, 2, 8, 8, 9, 9, 10]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0), (-1, 0.7, 0), (-0.5, 0, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02] (
interpolation = "vertex"
)
}
}
def Xform "C54Custom"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (4, 2, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [8]
float3[] extent = [(-0.7463334, 0.31734136, -0.022387203), (0.76110774, 0.852151, 0.022387203)]
double[] knots = [0, 1, 2, 3, 8, 9, 14, 15, 18, 19, 20, 21]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0), (-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.03] (
interpolation = "vertex"
)
}
}
}

BIN
tests/files/usd/compare/nurbs-gen-multiple.blend (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,59 @@
#usda 1.0
(
defaultPrim = "root"
doc = "<version>"
metersPerUnit = 1
upAxis = "Z"
)
def Xform "root" (
customData = {
dictionary Blender = {
bool generated = 1
}
}
)
{
def Xform "CAll"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (4, -5, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "CAll"
{
int[] curveVertexCounts = [3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9]
float3[] extent = [(-1.005, -0.01, -0.029999997), (13.029999, 13.915, 0.029999997)]
double[] knots = [0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 1, 2, 3, 3, 4, 4, 0, 0, 1, 1, 1, 2, 2, 3, 0, 1, 1, 2, 3, 3, 4, 4, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 1, 2, 3, 4, 4, 5, 5, 0, 0, 1, 1, 2, 2, 3, 3, 4, 0, 1, 1, 2, 2, 3, 3, 4, 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 1, 1, 1, 2, 3, 3, 3, 4, 5, 5, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 0, 1, 1, 1, 2, 3, 3, 3, 4, 5, 5, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 1, 2, 3, 4, 5, 5, 6, 6, 0, 0, 1, 1, 2, 2, 2, 3, 3, 4, 0, 1, 1, 2, 2, 3, 4, 4, 5, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 1, 1, 2, 3, 4, 4, 4, 5, 6, 6, -1, 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 5, 1, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 1, 1, 2, 3, 4, 5, 6, 6, 7, 7, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 1, 1, 1, 2, 3, 4, 5, 5, 5, 6, 7, 7, -1, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 5, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4]
int[] order = [2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4]
point3f[] points = [(-1, 0.7, 0), (1, 0, 0), (-1, 0.7, 0), (-1, 1.7, 0), (1, 1, 0), (-1, 1.7, 0), (-1, 2.7, 0), (1, 2, 0), (-1, 2.7, 0), (-1, 3.7, 0), (1, 3, 0), (-1, 3.7, 0), (2, 0.7, 0), (3, 0, 0), (4, 0.90000004, 0), (2, 0.7, 0), (2, 1.7, 0), (3, 1, 0), (4, 1.9000001, 0), (2, 1.7, 0), (2, 2.7, 0), (3, 2, 0), (4, 2.9, 0), (2, 2.7, 0), (2, 3.7, 0), (3, 3, 0), (4, 3.9, 0), (2, 3.7, 0), (2, 5.7, 0), (3, 5, 0), (4, 5.9, 0), (2, 5.7, 0), (3, 5, 0), (2, 6.7, 0), (3, 6, 0), (4, 6.9, 0), (2, 6.7, 0), (3, 6, 0), (2, 7.7, 0), (3, 7, 0), (4, 7.9, 0), (2, 7.7, 0), (3, 7, 0), (2, 8.7, 0), (3, 8, 0), (4, 8.9, 0), (2, 8.7, 0), (3, 8, 0), (5, 0.7, 0), (5.6666, 0, 0), (6.3333, 0.90000004, 0), (7, 0.8, 0), (5, 0.7, 0), (5, 1.7, 0), (5.6666, 1, 0), (6.3333, 1.9000001, 0), (7, 1.8, 0), (5, 1.7, 0), (5, 2.7, 0), (5.6666, 2, 0), (6.3333, 2.9, 0), (7, 2.8, 0), (5, 2.7, 0), (5, 3.7, 0), (5.6666, 3, 0), (6.3333, 3.9, 0), (7, 3.8, 0), (5, 3.7, 0), (5, 5.7, 0), (5.6666, 5, 0), (6.3333, 5.9, 0), (7, 5.8, 0), (5, 5.7, 0), (5.6666, 5, 0), (5, 6.7, 0), (5.6666, 6, 0), (6.3333, 6.9, 0), (7, 6.8, 0), (5, 6.7, 0), (5.6666, 6, 0), (5, 7.7, 0), (5.6666, 7, 0), (6.3333, 7.9, 0), (7, 7.8, 0), (5, 7.7, 0), (5.6666, 7, 0), (5, 8.7, 0), (5.6666, 8, 0), (6.3333, 8.9, 0), (7, 8.8, 0), (5, 8.7, 0), (5.6666, 8, 0), (5, 10.7, 0), (5.6666, 10, 0), (6.3333, 10.9, 0), (7, 10.8, 0), (5, 10.7, 0), (5.6666, 10, 0), (6.3333, 10.9, 0), (5, 11.7, 0), (5.6666, 11, 0), (6.3333, 11.9, 0), (7, 11.8, 0), (5, 11.7, 0), (5.6666, 11, 0), (6.3333, 11.9, 0), (5, 12.7, 0), (5.6666, 12, 0), (6.3333, 12.9, 0), (7, 12.8, 0), (5, 12.7, 0), (5.6666, 12, 0), (6.3333, 12.9, 0), (5, 13.7, 0), (5.6666, 13, 0), (6.3333, 13.9, 0), (7, 13.8, 0), (5, 13.7, 0), (5.6666, 13, 0), (6.3333, 13.9, 0), (8, 0.7, 0), (8.5, 0, 0), (9, 0.90000004, 0), (9.5, 0.8, 0), (10, 0.5, 0), (8, 0.7, 0), (8, 1.7, 0), (8.5, 1, 0), (9, 1.9000001, 0), (9.5, 1.8, 0), (10, 1.5, 0), (8, 1.7, 0), (8, 2.7, 0), (8.5, 2, 0), (9, 2.9, 0), (9.5, 2.8, 0), (10, 2.5, 0), (8, 2.7, 0), (8, 3.7, 0), (8.5, 3, 0), (9, 3.9, 0), (9.5, 3.8, 0), (10, 3.5, 0), (8, 3.7, 0), (8, 5.7, 0), (8.5, 5, 0), (9, 5.9, 0), (9.5, 5.8, 0), (10, 5.5, 0), (8, 5.7, 0), (8.5, 5, 0), (8, 6.7, 0), (8.5, 6, 0), (9, 6.9, 0), (9.5, 6.8, 0), (10, 6.5, 0), (8, 6.7, 0), (8.5, 6, 0), (8, 7.7, 0), (8.5, 7, 0), (9, 7.9, 0), (9.5, 7.8, 0), (10, 7.5, 0), (8, 7.7, 0), (8.5, 7, 0), (8, 8.7, 0), (8.5, 8, 0), (9, 8.9, 0), (9.5, 8.8, 0), (10, 8.5, 0), (8, 8.7, 0), (8.5, 8, 0), (8, 10.7, 0), (8.5, 10, 0), (9, 10.9, 0), (9.5, 10.8, 0), (10, 10.5, 0), (8, 10.7, 0), (8.5, 10, 0), (9, 10.9, 0), (8, 11.7, 0), (8.5, 11, 0), (9, 11.9, 0), (9.5, 11.8, 0), (10, 11.5, 0), (8, 11.7, 0), (8.5, 11, 0), (9, 11.9, 0), (8, 12.7, 0), (8.5, 12, 0), (9, 12.9, 0), (9.5, 12.8, 0), (10, 12.5, 0), (8, 12.7, 0), (8.5, 12, 0), (9, 12.9, 0), (8, 13.7, 0), (8.5, 13, 0), (9, 13.9, 0), (9.5, 13.8, 0), (10, 13.5, 0), (8, 13.7, 0), (8.5, 13, 0), (9, 13.9, 0), (11, 0.7, 0), (11.3999, 0, 0), (11.8, 0.90000004, 0), (12.2, 0.8, 0), (12.6, 0.5, 0), (13, 0.1, 0), (11, 0.7, 0), (11, 1.7, 0), (11.3999, 1, 0), (11.8, 1.9000001, 0), (12.2, 1.8, 0), (12.6, 1.5, 0), (13, 1.1, 0), (11, 1.7, 0), (11, 2.7, 0), (11.3999, 2, 0), (11.8, 2.9, 0), (12.2, 2.8, 0), (12.6, 2.5, 0), (13, 2.1, 0), (11, 2.7, 0), (11, 3.7, 0), (11.3999, 3, 0), (11.8, 3.9, 0), (12.2, 3.8, 0), (12.6, 3.5, 0), (13, 3.1, 0), (11, 3.7, 0), (11, 5.7, 0), (11.3999, 5, 0), (11.8, 5.9, 0), (12.2, 5.8, 0), (12.6, 5.5, 0), (13, 5.1, 0), (11, 5.7, 0), (11.3999, 5, 0), (11, 6.7, 0), (11.3999, 6, 0), (11.8, 6.9, 0), (12.2, 6.8, 0), (12.6, 6.5, 0), (13, 6.1, 0), (11, 6.7, 0), (11.3999, 6, 0), (11, 7.7, 0), (11.3999, 7, 0), (11.8, 7.9, 0), (12.2, 7.8, 0), (12.6, 7.5, 0), (13, 7.1, 0), (11, 7.7, 0), (11.3999, 7, 0), (11, 8.7, 0), (11.3999, 8, 0), (11.8, 8.9, 0), (12.2, 8.8, 0), (12.6, 8.5, 0), (13, 8.1, 0), (11, 8.7, 0), (11.3999, 8, 0), (11, 10.7, 0), (11.3999, 10, 0), (11.8, 10.9, 0), (12.2, 10.8, 0), (12.6, 10.5, 0), (13, 10.1, 0), (11, 10.7, 0), (11.3999, 10, 0), (11.8, 10.9, 0), (11, 11.7, 0), (11.3999, 11, 0), (11.8, 11.9, 0), (12.2, 11.8, 0), (12.6, 11.5, 0), (13, 11.1, 0), (11, 11.7, 0), (11.3999, 11, 0), (11.8, 11.9, 0), (11, 12.7, 0), (11.3999, 12, 0), (11.8, 12.9, 0), (12.2, 12.8, 0), (12.6, 12.5, 0), (13, 12.1, 0), (11, 12.7, 0), (11.3999, 12, 0), (11.8, 12.9, 0), (11, 13.7, 0), (11.3999, 13, 0), (11.8, 13.9, 0), (12.2, 13.8, 0), (12.6, 13.5, 0), (13, 13.1, 0), (11, 13.7, 0), (11.3999, 13, 0), (11.8, 13.9, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 1, 1, 0.7071067690849304, 1, 1, 1, 0.7071067690849304, 1, 1, 1, 0.7071067690849304, 1, 1, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.01, 0.01, 0.02, 0.01, 0.01, 0.02, 0.01, 0.01, 0.02, 0.01, 0.01, 0.02, 0.03, 0.01, 0.01, 0.02, 0.03, 0.01, 0.01, 0.02, 0.03, 0.01, 0.01, 0.02, 0.03, 0.01, 0.01, 0.02, 0.03, 0.01, 0.02, 0.01, 0.02, 0.03, 0.01, 0.02, 0.01, 0.02, 0.03, 0.01, 0.02, 0.01, 0.02, 0.03, 0.01, 0.02, 0.01, 0.02, 0.03, 0.04, 0.01, 0.01, 0.02, 0.03, 0.04, 0.01, 0.01, 0.02, 0.03, 0.04, 0.01, 0.01, 0.02, 0.03, 0.04, 0.01, 0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.03, 0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.03, 0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.03, 0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.03, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.03, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.03, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.03, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.03, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02, 0.03, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02, 0.03, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02, 0.03, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02, 0.03] (
interpolation = "vertex"
)
}
}
def Xform "NCAll"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-12, -5, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "NCAll"
{
int[] curveVertexCounts = [2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6]
float3[] extent = [(-1.005, -0.01, -0.029999997), (13.029999, 13.831643, 0.029999997)]
double[] knots = [1, 1, 2, 2, 0, 0, 1, 1, 1, 1, 2, 2, 0, 0, 1, 1, 1, 1, 2, 3, 3, 0, 0, 1, 2, 2, 1, 1, 2, 3, 3, 0, 0, 1, 2, 2, 1, 1, 2, 3, 4, 4, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 2, 2, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3, 4, 4, 0, 0, 1, 2, 3, 3, 1, 1, 2, 3, 4, 4, 0, 0, 1, 2, 3, 3, 1, 1, 2, 3, 4, 5, 5, 0, 0, 0, 1, 2, 2, 2, 0, 0, 1, 1, 2, 2, 2, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 6, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 5, 0, 0, 1, 2, 3, 4, 4, 1, 1, 2, 3, 4, 5, 5, 0, 0, 1, 2, 3, 4, 4, 1, 1, 2, 3, 4, 5, 6, 6, 0, 0, 0, 1, 2, 3, 3, 3, 0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 0, 1, 1, 2, 2, 2, 1, 1, 2, 3, 4, 5, 6, 7, 7, 0, 0, 0, 0, 1, 2, 2, 2, 2, 0, 0, 1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 6, 0, 0, 1, 2, 3, 4, 5, 5, 1, 1, 2, 3, 4, 5, 6, 6, 0, 0, 1, 2, 3, 4, 5, 5, 1, 1, 2, 3, 4, 5, 6, 7, 7, 0, 0, 0, 1, 2, 3, 4, 4, 4, 0, 0, 1, 1, 2, 2, 3, 3, 3, 0, 0, 0, 1, 1, 2, 2, 2, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8, 8, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1]
int[] order = [2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4]
point3f[] points = [(-1, 0.7, 0), (1, 0, 0), (-1, 1.7, 0), (1, 1, 0), (-1, 2.7, 0), (1, 2, 0), (-1, 3.7, 0), (1, 3, 0), (2, 0.7, 0), (3, 0, 0), (4, 0.90000004, 0), (2, 1.7, 0), (3, 1, 0), (4, 1.9000001, 0), (2, 2.7, 0), (3, 2, 0), (4, 2.9, 0), (2, 3.7, 0), (3, 3, 0), (4, 3.9, 0), (2, 5.7, 0), (3, 5, 0), (4, 5.9, 0), (2, 6.7, 0), (3, 6, 0), (4, 6.9, 0), (2, 7.7, 0), (3, 7, 0), (4, 7.9, 0), (2, 8.7, 0), (3, 8, 0), (4, 8.9, 0), (5, 0.7, 0), (5.6666, 0, 0), (6.3333, 0.90000004, 0), (7, 0.8, 0), (5, 1.7, 0), (5.6666, 1, 0), (6.3333, 1.9000001, 0), (7, 1.8, 0), (5, 2.7, 0), (5.6666, 2, 0), (6.3333, 2.9, 0), (7, 2.8, 0), (5, 3.7, 0), (5.6666, 3, 0), (6.3333, 3.9, 0), (7, 3.8, 0), (5, 5.7, 0), (5.6666, 5, 0), (6.3333, 5.9, 0), (7, 5.8, 0), (5, 6.7, 0), (5.6666, 6, 0), (6.3333, 6.9, 0), (7, 6.8, 0), (5, 7.7, 0), (5.6666, 7, 0), (6.3333, 7.9, 0), (7, 7.8, 0), (5, 8.7, 0), (5.6666, 8, 0), (6.3333, 8.9, 0), (7, 8.8, 0), (5, 10.7, 0), (5.6666, 10, 0), (6.3333, 10.9, 0), (7, 10.8, 0), (5, 11.7, 0), (5.6666, 11, 0), (6.3333, 11.9, 0), (7, 11.8, 0), (5, 12.7, 0), (5.6666, 12, 0), (6.3333, 12.9, 0), (7, 12.8, 0), (5, 13.7, 0), (5.6666, 13, 0), (6.3333, 13.9, 0), (7, 13.8, 0), (8, 0.7, 0), (8.5, 0, 0), (9, 0.90000004, 0), (9.5, 0.8, 0), (10, 0.5, 0), (8, 1.7, 0), (8.5, 1, 0), (9, 1.9000001, 0), (9.5, 1.8, 0), (10, 1.5, 0), (8, 2.7, 0), (8.5, 2, 0), (9, 2.9, 0), (9.5, 2.8, 0), (10, 2.5, 0), (8, 3.7, 0), (8.5, 3, 0), (9, 3.9, 0), (9.5, 3.8, 0), (10, 3.5, 0), (8, 5.7, 0), (8.5, 5, 0), (9, 5.9, 0), (9.5, 5.8, 0), (10, 5.5, 0), (8, 6.7, 0), (8.5, 6, 0), (9, 6.9, 0), (9.5, 6.8, 0), (10, 6.5, 0), (8, 7.7, 0), (8.5, 7, 0), (9, 7.9, 0), (9.5, 7.8, 0), (10, 7.5, 0), (8, 8.7, 0), (8.5, 8, 0), (9, 8.9, 0), (9.5, 8.8, 0), (10, 8.5, 0), (8, 10.7, 0), (8.5, 10, 0), (9, 10.9, 0), (9.5, 10.8, 0), (10, 10.5, 0), (8, 11.7, 0), (8.5, 11, 0), (9, 11.9, 0), (9.5, 11.8, 0), (10, 11.5, 0), (8, 12.7, 0), (8.5, 12, 0), (9, 12.9, 0), (9.5, 12.8, 0), (10, 12.5, 0), (8, 13.7, 0), (8.5, 13, 0), (9, 13.9, 0), (9.5, 13.8, 0), (10, 13.5, 0), (11, 0.7, 0), (11.3999, 0, 0), (11.8, 0.90000004, 0), (12.2, 0.8, 0), (12.6, 0.5, 0), (13, 0.1, 0), (11, 1.7, 0), (11.3999, 1, 0), (11.8, 1.9000001, 0), (12.2, 1.8, 0), (12.6, 1.5, 0), (13, 1.1, 0), (11, 2.7, 0), (11.3999, 2, 0), (11.8, 2.9, 0), (12.2, 2.8, 0), (12.6, 2.5, 0), (13, 2.1, 0), (11, 3.7, 0), (11.3999, 3, 0), (11.8, 3.9, 0), (12.2, 3.8, 0), (12.6, 3.5, 0), (13, 3.1, 0), (11, 5.7, 0), (11.3999, 5, 0), (11.8, 5.9, 0), (12.2, 5.8, 0), (12.6, 5.5, 0), (13, 5.1, 0), (11, 6.7, 0), (11.3999, 6, 0), (11.8, 6.9, 0), (12.2, 6.8, 0), (12.6, 6.5, 0), (13, 6.1, 0), (11, 7.7, 0), (11.3999, 7, 0), (11.8, 7.9, 0), (12.2, 7.8, 0), (12.6, 7.5, 0), (13, 7.1, 0), (11, 8.7, 0), (11.3999, 8, 0), (11.8, 8.9, 0), (12.2, 8.8, 0), (12.6, 8.5, 0), (13, 8.1, 0), (11, 10.7, 0), (11.3999, 10, 0), (11.8, 10.9, 0), (12.2, 10.8, 0), (12.6, 10.5, 0), (13, 10.1, 0), (11, 11.7, 0), (11.3999, 11, 0), (11.8, 11.9, 0), (12.2, 11.8, 0), (12.6, 11.5, 0), (13, 11.1, 0), (11, 12.7, 0), (11.3999, 12, 0), (11.8, 12.9, 0), (12.2, 12.8, 0), (12.6, 12.5, 0), (13, 12.1, 0), (11, 13.7, 0), (11.3999, 13, 0), (11.8, 13.9, 0), (12.2, 13.8, 0), (12.6, 13.5, 0), (13, 13.1, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.01, 0.02, 0.01, 0.02, 0.01, 0.02, 0.01, 0.02, 0.03, 0.01, 0.02, 0.03, 0.01, 0.02, 0.03, 0.01, 0.02, 0.03, 0.01, 0.02, 0.03, 0.01, 0.02, 0.03, 0.01, 0.02, 0.03, 0.01, 0.02, 0.03, 0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06] (
interpolation = "vertex"
)
}
}
}

BIN
tests/files/usd/compare/nurbs-gen-single.blend (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,2028 @@
#usda 1.0
(
defaultPrim = "root"
doc = "<version>"
metersPerUnit = 1
upAxis = "Z"
)
def Xform "root" (
customData = {
dictionary Blender = {
bool generated = 1
}
}
)
{
def Xform "C220"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (4, -5, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [3]
float3[] extent = [(-1.005, -0.01, -0.01), (1.01, 0.705, 0.01)]
double[] knots = [0, 1, 2, 3, 4]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (1, 0, 0), (-1, 0.7, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.01] (
interpolation = "vertex"
)
}
}
def Xform "C221"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (4, -4, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [3]
float3[] extent = [(-1.005, -0.01, -0.01), (1.01, 0.705, 0.01)]
double[] knots = [0, 1, 2, 3, 4]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (1, 0, 0), (-1, 0.7, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.01] (
interpolation = "vertex"
)
}
}
def Xform "C222"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (4, -3, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [3]
float3[] extent = [(-1.005, -0.01, -0.01), (1.01, 0.705, 0.01)]
double[] knots = [0, 1, 2, 3, 4]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (1, 0, 0), (-1, 0.7, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.01] (
interpolation = "vertex"
)
}
}
def Xform "C223"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (4, -2, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [3]
float3[] extent = [(-1.005, -0.01, -0.01), (1.01, 0.705, 0.01)]
double[] knots = [0, 1, 2, 3, 4]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (1, 0, 0), (-1, 0.7, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.01] (
interpolation = "vertex"
)
}
}
def Xform "C320"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (7, -5, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [4]
float3[] extent = [(-1.005, -0.01, -0.015), (1.015, 0.915, 0.015)]
double[] knots = [0, 1, 2, 3, 4, 5]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (0, 0, 0), (1, 0.90000004, 0), (-1, 0.7, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 1]
float[] widths = [0.01, 0.02, 0.03, 0.01] (
interpolation = "vertex"
)
}
}
def Xform "C321"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (7, -4, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [4]
float3[] extent = [(-1.005, -0.01, -0.015), (1.015, 0.915, 0.015)]
double[] knots = [0, 1, 2, 3, 4, 5]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (0, 0, 0), (1, 0.90000004, 0), (-1, 0.7, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 1]
float[] widths = [0.01, 0.02, 0.03, 0.01] (
interpolation = "vertex"
)
}
}
def Xform "C322"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (7, -3, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [4]
float3[] extent = [(-1.005, -0.01, -0.015), (1.015, 0.915, 0.015)]
double[] knots = [0, 1, 2, 3, 4, 5]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (0, 0, 0), (1, 0.90000004, 0), (-1, 0.7, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 1]
float[] widths = [0.01, 0.02, 0.03, 0.01] (
interpolation = "vertex"
)
}
}
def Xform "C323"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (7, -2, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [4]
float3[] extent = [(-1.005, -0.01, -0.015), (1.015, 0.915, 0.015)]
double[] knots = [0, 1, 2, 3, 4, 5]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (0, 0, 0), (1, 0.90000004, 0), (-1, 0.7, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 1]
float[] widths = [0.01, 0.02, 0.03, 0.01] (
interpolation = "vertex"
)
}
}
def Xform "C330"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (7, 0, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [5]
float3[] extent = [(-0.7215866, 0.24261752, -0.013575812), (0.7287382, 0.8352093, 0.013575812)]
double[] knots = [0, 1, 2, 3, 4, 5, 6, 7]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (0, 0, 0), (1, 0.90000004, 0), (-1, 0.7, 0), (0, 0, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.01, 0.02] (
interpolation = "vertex"
)
}
}
def Xform "C331"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (7, 1, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [5]
float3[] extent = [(-1.005, 0.33002716, -0.013324175), (0.67815953, 0.7846787, 0.013324175)]
double[] knots = [0, 1, 1, 2, 3, 3, 4, 4]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (0, 0, 0), (1, 0.90000004, 0), (-1, 0.7, 0), (0, 0, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.01, 0.02] (
interpolation = "vertex"
)
}
}
def Xform "C332"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (7, 2, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [5]
float3[] extent = [(-1.005, -0.01, -0.015), (1.015, 0.915, 0.015)]
double[] knots = [0, 0, 1, 1, 1, 2, 2, 3]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (0, 0, 0), (1, 0.90000004, 0), (-1, 0.7, 0), (0, 0, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.01, 0.02] (
interpolation = "vertex"
)
}
}
def Xform "C333"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (7, 3, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [5]
float3[] extent = [(-1.005, -0.01, -0.015), (1.015, 0.915, 0.015)]
double[] knots = [0, 1, 1, 2, 3, 3, 4, 4]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (0, 0, 0), (1, 0.90000004, 0), (-1, 0.7, 0), (0, 0, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.01, 0.02] (
interpolation = "vertex"
)
}
}
def Xform "C420"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (10, -5, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [5]
float3[] extent = [(-1.005, -0.01, -0.02), (1.02, 0.915, 0.02)]
double[] knots = [0, 1, 2, 3, 4, 5, 6]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0), (-1, 0.7, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.01] (
interpolation = "vertex"
)
}
}
def Xform "C421"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (10, -4, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [5]
float3[] extent = [(-1.005, -0.01, -0.02), (1.02, 0.915, 0.02)]
double[] knots = [0, 1, 2, 3, 4, 5, 6]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0), (-1, 0.7, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.01] (
interpolation = "vertex"
)
}
}
def Xform "C422"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (10, -3, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [5]
float3[] extent = [(-1.005, -0.01, -0.02), (1.02, 0.915, 0.02)]
double[] knots = [0, 1, 2, 3, 4, 5, 6]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0), (-1, 0.7, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.01] (
interpolation = "vertex"
)
}
}
def Xform "C423"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (10, -2, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [5]
float3[] extent = [(-1.005, -0.01, -0.02), (1.02, 0.915, 0.02)]
double[] knots = [0, 1, 2, 3, 4, 5, 6]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0), (-1, 0.7, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.01] (
interpolation = "vertex"
)
}
}
def Xform "C430"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (10, 0, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-0.8118869, 0.24261752, -0.017652245), (0.7046068, 0.8802426, 0.017652245)]
double[] knots = [0, 1, 2, 3, 4, 5, 6, 7, 8]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0), (-1, 0.7, 0), (-0.33339998, 0, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.01, 0.02] (
interpolation = "vertex"
)
}
}
def Xform "C431"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (10, 1, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-1.005, 0.33002716, -0.017364832), (0.66599506, 0.8802426, 0.017364832)]
double[] knots = [0, 1, 1, 2, 3, 4, 4, 5, 5]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0), (-1, 0.7, 0), (-0.33339998, 0, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.01, 0.02] (
interpolation = "vertex"
)
}
}
def Xform "C432"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (10, 2, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-0.5755015, -0.01, -0.02), (1.02, 0.83401394, 0.02)]
double[] knots = [0, 0, 1, 1, 2, 2, 3, 3, 4]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0), (-1, 0.7, 0), (-0.33339998, 0, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.01, 0.02] (
interpolation = "vertex"
)
}
}
def Xform "C433"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (10, 3, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-1.005, 0.4509001, -0.015787298), (0.45407265, 0.915, 0.015787298)]
double[] knots = [0, 1, 1, 2, 2, 3, 3, 4, 4]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0), (-1, 0.7, 0), (-0.33339998, 0, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.01, 0.02] (
interpolation = "vertex"
)
}
}
def Xform "C440"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (10, 5, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [7]
float3[] extent = [(-0.7236948, 0.31736162, -0.016823994), (0.5933415, 0.8565444, 0.016823994)]
double[] knots = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0), (-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.03] (
interpolation = "vertex"
)
}
}
def Xform "C441"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (10, 6, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [7]
float3[] extent = [(-1.005, 0.3781014, -0.016453205), (0.5435281, 0.8113272, 0.016453205)]
double[] knots = [0, 1, 1, 1, 2, 3, 3, 3, 4, 5, 5]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0), (-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.03] (
interpolation = "vertex"
)
}
}
def Xform "C442"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (10, 7, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [7]
float3[] extent = [(-1.005, -0.01, -0.02), (1.02, 0.915, 0.02)]
double[] knots = [0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0), (-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.03] (
interpolation = "vertex"
)
}
}
def Xform "C443"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (10, 8, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [7]
float3[] extent = [(-1.005, -0.01, -0.02), (1.02, 0.915, 0.02)]
double[] knots = [0, 1, 1, 1, 2, 3, 3, 3, 4, 5, 5]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0), (-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.03] (
interpolation = "vertex"
)
}
}
def Xform "C520"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (13, -5, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-1.005, -0.01, -0.024999999), (1.025, 0.915, 0.024999999)]
double[] knots = [0, 1, 2, 3, 4, 5, 6, 7]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0), (-1, 0.7, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01] (
interpolation = "vertex"
)
}
}
def Xform "C521"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (13, -4, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-1.005, -0.01, -0.024999999), (1.025, 0.915, 0.024999999)]
double[] knots = [0, 1, 2, 3, 4, 5, 6, 7]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0), (-1, 0.7, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01] (
interpolation = "vertex"
)
}
}
def Xform "C522"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (13, -3, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-1.005, -0.01, -0.024999999), (1.025, 0.915, 0.024999999)]
double[] knots = [0, 1, 2, 3, 4, 5, 6, 7]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0), (-1, 0.7, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01] (
interpolation = "vertex"
)
}
}
def Xform "C523"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (13, -2, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-1.005, -0.01, -0.024999999), (1.025, 0.915, 0.024999999)]
double[] knots = [0, 1, 2, 3, 4, 5, 6, 7]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0), (-1, 0.7, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01] (
interpolation = "vertex"
)
}
}
def Xform "C530"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (13, 0, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [7]
float3[] extent = [(-0.83909357, 0.24261752, -0.023324175), (0.8557419, 0.8802426, 0.023324175)]
double[] knots = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0), (-1, 0.7, 0), (-0.5, 0, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02] (
interpolation = "vertex"
)
}
}
def Xform "C531"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (13, 1, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [7]
float3[] extent = [(-1.005, 0.33002716, -0.023147766), (0.8379246, 0.8802426, 0.023147766)]
double[] knots = [0, 1, 1, 2, 3, 4, 5, 5, 6, 6]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0), (-1, 0.7, 0), (-0.5, 0, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02] (
interpolation = "vertex"
)
}
}
def Xform "C532"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (13, 2, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [7]
float3[] extent = [(-1.005, -0.01, -0.024999999), (1.025, 0.915, 0.024999999)]
double[] knots = [0, 0, 1, 1, 2, 2, 2, 3, 3, 4]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0), (-1, 0.7, 0), (-0.5, 0, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02] (
interpolation = "vertex"
)
}
}
def Xform "C533"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (13, 3, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [7]
float3[] extent = [(-1.005, -0.01, -0.024999999), (1.025, 0.915, 0.024999999)]
double[] knots = [0, 1, 1, 2, 2, 3, 4, 4, 5, 5]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0), (-1, 0.7, 0), (-0.5, 0, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02] (
interpolation = "vertex"
)
}
}
def Xform "C540"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (13, 5, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [8]
float3[] extent = [(-0.7463334, 0.31734136, -0.022387203), (0.76110774, 0.852151, 0.022387203)]
double[] knots = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0), (-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.03] (
interpolation = "vertex"
)
}
}
def Xform "C541"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (13, 6, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [8]
float3[] extent = [(-1.005, 0.37973455, -0.022024361), (0.7244607, 0.8404016, 0.022024361)]
double[] knots = [0, 1, 1, 1, 2, 3, 4, 4, 4, 5, 6, 6]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0), (-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.03] (
interpolation = "vertex"
)
}
}
def Xform "C542"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (13, 7, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [8]
float3[] extent = [(-1.005, -0.01, -0.024999999), (1.025, 0.915, 0.024999999)]
double[] knots = [-1, 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 5]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0), (-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.03] (
interpolation = "vertex"
)
}
}
def Xform "C543"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (13, 8, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [8]
float3[] extent = [(-1.005, -0.01, -0.024999999), (1.025, 0.915, 0.024999999)]
double[] knots = [1, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 4]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0), (-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.01, 0.02, 0.03] (
interpolation = "vertex"
)
}
}
def Xform "C620"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (16, -5, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [7]
float3[] extent = [(-1.005, -0.01, -0.029999997), (1.03, 0.915, 0.029999997)]
double[] knots = [0, 1, 2, 3, 4, 5, 6, 7, 8]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0), (-1, 0.7, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01] (
interpolation = "vertex"
)
}
}
def Xform "C621"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (16, -4, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [7]
float3[] extent = [(-1.005, -0.01, -0.029999997), (1.03, 0.915, 0.029999997)]
double[] knots = [0, 1, 2, 3, 4, 5, 6, 7, 8]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0), (-1, 0.7, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01] (
interpolation = "vertex"
)
}
}
def Xform "C622"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (16, -3, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [7]
float3[] extent = [(-1.005, -0.01, -0.029999997), (1.03, 0.915, 0.029999997)]
double[] knots = [0, 1, 2, 3, 4, 5, 6, 7, 8]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0), (-1, 0.7, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01] (
interpolation = "vertex"
)
}
}
def Xform "C623"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (16, -2, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [7]
float3[] extent = [(-1.005, -0.01, -0.029999997), (1.03, 0.915, 0.029999997)]
double[] knots = [0, 1, 2, 3, 4, 5, 6, 7, 8]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0), (-1, 0.7, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01] (
interpolation = "vertex"
)
}
}
def Xform "C630"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (16, 0, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [8]
float3[] extent = [(-0.87488467, 0.22741997, -0.027437078), (0.82240325, 0.8802426, 0.027437078)]
double[] knots = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0), (-1, 0.7, 0), (-0.6001, 0, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02] (
interpolation = "vertex"
)
}
}
def Xform "C631"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (16, 1, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [8]
float3[] extent = [(-1.005, 0.25936726, -0.027267104), (0.8086355, 0.8802426, 0.027267104)]
double[] knots = [0, 1, 1, 2, 3, 4, 5, 6, 6, 7, 7]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0), (-1, 0.7, 0), (-0.6001, 0, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02] (
interpolation = "vertex"
)
}
}
def Xform "C632"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (16, 2, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [8]
float3[] extent = [(-0.7098612, -0.01, -0.029999997), (1.03, 0.83401394, 0.029999997)]
double[] knots = [0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0), (-1, 0.7, 0), (-0.6001, 0, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02] (
interpolation = "vertex"
)
}
}
def Xform "C633"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (16, 3, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [8]
float3[] extent = [(-1.005, 0.35677534, -0.025464311), (0.66260934, 0.915, 0.025464311)]
double[] knots = [0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0), (-1, 0.7, 0), (-0.6001, 0, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02] (
interpolation = "vertex"
)
}
}
def Xform "C640"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (16, 5, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [9]
float3[] extent = [(-0.803325, 0.2751881, -0.02641032), (0.73923624, 0.852151, 0.02641032)]
double[] knots = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0), (-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02, 0.03] (
interpolation = "vertex"
)
}
}
def Xform "C641"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (16, 6, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [9]
float3[] extent = [(-1.005, 0.30632252, -0.026247429), (0.72604185, 0.8440879, 0.026247429)]
double[] knots = [0, 1, 1, 1, 2, 3, 4, 5, 5, 5, 6, 7, 7]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0), (-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02, 0.03] (
interpolation = "vertex"
)
}
}
def Xform "C642"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (16, 7, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [9]
float3[] extent = [(-0.68935716, -0.01, -0.025377944), (0.6556133, 0.73673767, 0.025377944)]
double[] knots = [-1, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 5]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0), (-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02, 0.03] (
interpolation = "vertex"
)
}
}
def Xform "C643"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (16, 8, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [9]
float3[] extent = [(-1.005, 0.4017877, -0.02381783), (0.5292443, 0.83164406, 0.02381783)]
double[] knots = [1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0), (-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06, 0.01, 0.02, 0.03] (
interpolation = "vertex"
)
}
}
def Xform "NC220"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-12, -5, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [2]
float3[] extent = [(-1.005, -0.01, -0.01), (1.01, 0.705, 0.01)]
double[] knots = [1, 1, 2, 2]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (1, 0, 0)]
double[] pointWeights = [1, 0.7071067690849304]
float[] widths = [0.01, 0.02] (
interpolation = "vertex"
)
}
}
def Xform "NC221"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-12, -4, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [2]
float3[] extent = [(-1.005, -0.01, -0.01), (1.01, 0.705, 0.01)]
double[] knots = [0, 0, 1, 1]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (1, 0, 0)]
double[] pointWeights = [1, 0.7071067690849304]
float[] widths = [0.01, 0.02] (
interpolation = "vertex"
)
}
}
def Xform "NC222"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-12, -3, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [2]
float3[] extent = [(-1.005, -0.01, -0.01), (1.01, 0.705, 0.01)]
double[] knots = [1, 1, 2, 2]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (1, 0, 0)]
double[] pointWeights = [1, 0.7071067690849304]
float[] widths = [0.01, 0.02] (
interpolation = "vertex"
)
}
}
def Xform "NC223"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-12, -2, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [2]
float3[] extent = [(-1.005, -0.01, -0.01), (1.01, 0.705, 0.01)]
double[] knots = [0, 0, 1, 1]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (1, 0, 0)]
double[] pointWeights = [1, 0.7071067690849304]
float[] widths = [0.01, 0.02] (
interpolation = "vertex"
)
}
}
def Xform "NC320"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-9, -5, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [3]
float3[] extent = [(-1.005, -0.01, -0.015), (1.015, 0.915, 0.015)]
double[] knots = [1, 1, 2, 3, 3]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (0, 0, 0), (1, 0.90000004, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03] (
interpolation = "vertex"
)
}
}
def Xform "NC321"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-9, -4, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [3]
float3[] extent = [(-1.005, -0.01, -0.015), (1.015, 0.915, 0.015)]
double[] knots = [0, 0, 1, 2, 2]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (0, 0, 0), (1, 0.90000004, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03] (
interpolation = "vertex"
)
}
}
def Xform "NC322"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-9, -3, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [3]
float3[] extent = [(-1.005, -0.01, -0.015), (1.015, 0.915, 0.015)]
double[] knots = [1, 1, 2, 3, 3]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (0, 0, 0), (1, 0.90000004, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03] (
interpolation = "vertex"
)
}
}
def Xform "NC323"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-9, -2, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [3]
float3[] extent = [(-1.005, -0.01, -0.015), (1.015, 0.915, 0.015)]
double[] knots = [0, 0, 1, 2, 2]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (0, 0, 0), (1, 0.90000004, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03] (
interpolation = "vertex"
)
}
}
def Xform "NC330"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-9, 0, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [3]
float3[] extent = [(-0.5928575, 0.24261752, -0.012928931), (0.5987153, 0.5401367, 0.012928931)]
double[] knots = [1, 1, 2, 3, 4, 4]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (0, 0, 0), (1, 0.90000004, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03] (
interpolation = "vertex"
)
}
}
def Xform "NC331"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-9, 1, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [3]
float3[] extent = [(-1.005, 0.45090014, -0.015), (1.015, 0.915, 0.015)]
double[] knots = [0, 0, 0, 1, 1, 1]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (0, 0, 0), (1, 0.90000004, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03] (
interpolation = "vertex"
)
}
}
def Xform "NC332"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-9, 2, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [3]
float3[] extent = [(-1.005, -0.01, -0.015), (1.015, 0.915, 0.015)]
double[] knots = [0, 0, 1, 1, 2, 2]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (0, 0, 0), (1, 0.90000004, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03] (
interpolation = "vertex"
)
}
}
def Xform "NC333"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-9, 3, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [3]
float3[] extent = [(-1.005, 0.45090014, -0.015), (1.015, 0.915, 0.015)]
double[] knots = [0, 0, 0, 1, 1, 1]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (0, 0, 0), (1, 0.90000004, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03] (
interpolation = "vertex"
)
}
}
def Xform "NC420"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-6, -5, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [4]
float3[] extent = [(-1.005, -0.01, -0.02), (1.02, 0.915, 0.02)]
double[] knots = [1, 1, 2, 3, 4, 4]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04] (
interpolation = "vertex"
)
}
}
def Xform "NC421"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-6, -4, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [4]
float3[] extent = [(-1.005, -0.01, -0.02), (1.02, 0.915, 0.02)]
double[] knots = [0, 0, 1, 2, 3, 3]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04] (
interpolation = "vertex"
)
}
}
def Xform "NC422"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-6, -3, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [4]
float3[] extent = [(-1.005, -0.01, -0.02), (1.02, 0.915, 0.02)]
double[] knots = [1, 1, 2, 3, 4, 4]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04] (
interpolation = "vertex"
)
}
}
def Xform "NC423"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-6, -2, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [4]
float3[] extent = [(-1.005, -0.01, -0.02), (1.02, 0.915, 0.02)]
double[] knots = [0, 0, 1, 2, 3, 3]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04] (
interpolation = "vertex"
)
}
}
def Xform "NC430"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-6, 0, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [4]
float3[] extent = [(-0.73095626, 0.24261752, -0.017071066), (0.6265272, 0.8802426, 0.017071066)]
double[] knots = [1, 1, 2, 3, 4, 5, 5]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04] (
interpolation = "vertex"
)
}
}
def Xform "NC431"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-6, 1, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [4]
float3[] extent = [(-1.005, 0.33002716, -0.02), (1.02, 0.8450518, 0.02)]
double[] knots = [0, 0, 0, 1, 2, 2, 2]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04] (
interpolation = "vertex"
)
}
}
def Xform "NC432"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-6, 2, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [4]
float3[] extent = [(-0.34339994, -0.01, -0.02), (1.02, 0.83401394, 0.02)]
double[] knots = [0, 0, 1, 1, 2, 2, 2]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04] (
interpolation = "vertex"
)
}
}
def Xform "NC433"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-6, 3, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [4]
float3[] extent = [(-1.005, 0.45090014, -0.015), (0.34829998, 0.915, 0.015)]
double[] knots = [0, 0, 0, 1, 1, 1, 1]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04] (
interpolation = "vertex"
)
}
}
def Xform "NC440"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-6, 5, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [4]
float3[] extent = [(-0.34337923, 0.32137087, -0.014999999), (0.34829998, 0.784398, 0.014999999)]
double[] knots = [1, 1, 2, 3, 4, 5, 6, 6]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04] (
interpolation = "vertex"
)
}
}
def Xform "NC441"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-6, 6, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [4]
float3[] extent = [(-1.005, 0.48550388, -0.02), (1.02, 0.83164406, 0.02)]
double[] knots = [0, 0, 0, 0, 1, 1, 1, 1]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04] (
interpolation = "vertex"
)
}
}
def Xform "NC442"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-6, 7, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [4]
float3[] extent = [(-1.005, -0.01, -0.02), (1.02, 0.915, 0.02)]
double[] knots = [0, 0, 1, 1, 1, 2, 2, 2]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04] (
interpolation = "vertex"
)
}
}
def Xform "NC443"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-6, 8, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [4]
float3[] extent = [(-1.005, 0.48550388, -0.02), (1.02, 0.83164406, 0.02)]
double[] knots = [0, 0, 0, 0, 1, 1, 1, 1]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.33339998, 0, 0), (0.3333, 0.90000004, 0), (1, 0.8, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04] (
interpolation = "vertex"
)
}
}
def Xform "NC520"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-3, -5, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [5]
float3[] extent = [(-1.005, -0.01, -0.024999999), (1.025, 0.915, 0.024999999)]
double[] knots = [1, 1, 2, 3, 4, 5, 5]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997] (
interpolation = "vertex"
)
}
}
def Xform "NC521"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-3, -4, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [5]
float3[] extent = [(-1.005, -0.01, -0.024999999), (1.025, 0.915, 0.024999999)]
double[] knots = [0, 0, 1, 2, 3, 4, 4]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997] (
interpolation = "vertex"
)
}
}
def Xform "NC522"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-3, -3, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [5]
float3[] extent = [(-1.005, -0.01, -0.024999999), (1.025, 0.915, 0.024999999)]
double[] knots = [1, 1, 2, 3, 4, 5, 5]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997] (
interpolation = "vertex"
)
}
}
def Xform "NC523"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-3, -2, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [5]
float3[] extent = [(-1.005, -0.01, -0.024999999), (1.025, 0.915, 0.024999999)]
double[] knots = [0, 0, 1, 2, 3, 4, 4]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997] (
interpolation = "vertex"
)
}
}
def Xform "NC530"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-3, 0, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [5]
float3[] extent = [(-0.79996425, 0.24261752, -0.022928929), (0.8158221, 0.8802426, 0.022928929)]
double[] knots = [1, 1, 2, 3, 4, 5, 6, 6]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997] (
interpolation = "vertex"
)
}
}
def Xform "NC531"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-3, 1, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [5]
float3[] extent = [(-1.005, 0.33002716, -0.024999999), (1.025, 0.8802426, 0.024999999)]
double[] knots = [0, 0, 0, 1, 2, 3, 3, 3]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997] (
interpolation = "vertex"
)
}
}
def Xform "NC532"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-3, 2, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [5]
float3[] extent = [(-0.51, -0.01, -0.02), (0.52, 0.83401394, 0.02)]
double[] knots = [0, 0, 1, 1, 2, 2, 3, 3]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997] (
interpolation = "vertex"
)
}
}
def Xform "NC533"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-3, 3, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [5]
float3[] extent = [(-1.005, 0.45090014, -0.024999999), (1.025, 0.915, 0.024999999)]
double[] knots = [0, 0, 0, 1, 1, 2, 2, 2]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997] (
interpolation = "vertex"
)
}
}
def Xform "NC540"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-3, 5, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [5]
float3[] extent = [(-0.51, 0.32137087, -0.02), (0.52, 0.852151, 0.02)]
double[] knots = [1, 1, 2, 3, 4, 5, 6, 7, 7]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997] (
interpolation = "vertex"
)
}
}
def Xform "NC541"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-3, 6, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [5]
float3[] extent = [(-1.005, 0.37810147, -0.024999999), (1.025, 0.7980174, 0.024999999)]
double[] knots = [0, 0, 0, 0, 1, 2, 2, 2, 2]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997] (
interpolation = "vertex"
)
}
}
def Xform "NC542"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-3, 7, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [5]
float3[] extent = [(-0.51, -0.01, -0.024999999), (1.025, 0.73673767, 0.024999999)]
double[] knots = [0, 0, 1, 1, 1, 2, 2, 2, 2]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997] (
interpolation = "vertex"
)
}
}
def Xform "NC543"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (-3, 8, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [5]
float3[] extent = [(-1.005, 0.48550388, -0.02), (0.52, 0.83164406, 0.02)]
double[] knots = [0, 0, 0, 0, 1, 1, 1, 1, 1]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.5, 0, 0), (0, 0.90000004, 0), (0.5, 0.8, 0), (1, 0.5, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997] (
interpolation = "vertex"
)
}
}
def Xform "NC620"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (0, -5, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-1.005, -0.01, -0.029999997), (1.03, 0.915, 0.029999997)]
double[] knots = [1, 1, 2, 3, 4, 5, 6, 6]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06] (
interpolation = "vertex"
)
}
}
def Xform "NC621"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (0, -4, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-1.005, -0.01, -0.029999997), (1.03, 0.915, 0.029999997)]
double[] knots = [0, 0, 1, 2, 3, 4, 5, 5]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06] (
interpolation = "vertex"
)
}
}
def Xform "NC622"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (0, -3, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-1.005, -0.01, -0.029999997), (1.03, 0.915, 0.029999997)]
double[] knots = [1, 1, 2, 3, 4, 5, 6, 6]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06] (
interpolation = "vertex"
)
}
}
def Xform "NC623"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (0, -2, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-1.005, -0.01, -0.029999997), (1.03, 0.915, 0.029999997)]
double[] knots = [0, 0, 1, 2, 3, 4, 5, 5]
int[] order = [2]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06] (
interpolation = "vertex"
)
}
}
def Xform "NC630"
{
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-0.841427, 0.24261752, -0.027071066), (0.79275644, 0.8802426, 0.027071066)]
double[] knots = [1, 1, 2, 3, 4, 5, 6, 7, 7]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06] (
interpolation = "vertex"
)
}
}
def Xform "NC631"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (0, 1, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-1.005, 0.07000001, -0.029999997), (1.03, 0.8802426, 0.029999997)]
double[] knots = [0, 0, 0, 1, 2, 3, 4, 4, 4]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06] (
interpolation = "vertex"
)
}
}
def Xform "NC632"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (0, 2, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-0.6101, -0.01, -0.029999997), (1.03, 0.83401394, 0.029999997)]
double[] knots = [0, 0, 1, 1, 2, 2, 3, 3, 3]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06] (
interpolation = "vertex"
)
}
}
def Xform "NC633"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (0, 3, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-1.005, 0.45090014, -0.024999999), (0.62499994, 0.915, 0.024999999)]
double[] knots = [0, 0, 0, 1, 1, 2, 2, 2, 2]
int[] order = [3]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06] (
interpolation = "vertex"
)
}
}
def Xform "NC640"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (0, 5, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-0.61005855, 0.32137087, -0.024999997), (0.62499994, 0.852151, 0.024999997)]
double[] knots = [1, 1, 2, 3, 4, 5, 6, 7, 8, 8]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06] (
interpolation = "vertex"
)
}
}
def Xform "NC641"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (0, 6, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-1.005, 0.07000001, -0.029999997), (1.03, 0.8404016, 0.029999997)]
double[] knots = [0, 0, 0, 0, 1, 2, 3, 3, 3, 3]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06] (
interpolation = "vertex"
)
}
}
def Xform "NC642"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (0, 7, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-0.6101, -0.01, -0.024999999), (0.62499994, 0.73673767, 0.024999999)]
double[] knots = [0, 0, 1, 1, 1, 2, 2, 2, 3, 3]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06] (
interpolation = "vertex"
)
}
}
def Xform "NC643"
{
float3 xformOp:rotateXYZ = (0, -0, 0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (0, 8, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def NurbsCurves "Curves"
{
int[] curveVertexCounts = [6]
float3[] extent = [(-1.005, 0.48550388, -0.02), (0.21999998, 0.83164406, 0.02)]
double[] knots = [0, 0, 0, 0, 1, 1, 1, 1, 1, 1]
int[] order = [4]
point3f[] points = [(-1, 0.7, 0), (-0.6001, 0, 0), (-0.19999999, 0.90000004, 0), (0.19999999, 0.8, 0), (0.59999996, 0.5, 0), (1, 0.1, 0)]
double[] pointWeights = [1, 0.7071067690849304, 1, 0.7071067690849304, 1, 0.7071067690849304]
float[] widths = [0.01, 0.02, 0.03, 0.04, 0.049999997, 0.06] (
interpolation = "vertex"
)
}
}
}

View File

@@ -0,0 +1,126 @@
==== Curves(new): 5
- Curve 'C53Custom' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 4
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'C54Custom' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 4
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'NC62Custom' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 4
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'NC63Custom' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 4
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'NC64Custom' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 4
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
==== Objects: 5
- Obj 'C53Custom' CURVES data:'C53Custom'
- pos 4.000, 1.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C54Custom' CURVES data:'C54Custom'
- pos 4.000, 2.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC62Custom' CURVES data:'NC62Custom'
- pos 0.000, 0.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC63Custom' CURVES data:'NC63Custom'
- pos 0.000, 1.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC64Custom' CURVES data:'NC64Custom'
- pos 0.000, 2.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000

View File

@@ -0,0 +1,83 @@
==== Curves(new): 2
- Curve 'CAll' splines:48 control-points:212
- attr 'curve_type' INT8 CURVE
- 3 3 3 3 3 3 3 3 3 3 ... 3 3 3 3 3 3 3 3 3 3
- attr 'cyclic' BOOLEAN CURVE
- 1 1 1 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1 1 1 1
- attr 'knots_mode' INT8 CURVE
- 1 1 1 1 1 1 1 1 0 1 ... 1 1 0 1 2 3 0 4 4 3
- attr 'nurbs_order' INT8 CURVE
- 2 2 2 2 2 2 2 2 3 3 ... 2 2 3 3 3 3 4 4 4 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707 1.000 0.707 1.000 0.707 ... 1.000 0.707 1.000 0.707 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (1.000, 0.000, 0.000)
- (-1.000, 1.700, 0.000)
- (1.000, 1.000, 0.000)
- (-1.000, 2.700, 0.000)
- (1.000, 2.000, 0.000)
- (-1.000, 3.700, 0.000)
- (1.000, 3.000, 0.000)
- (2.000, 0.700, 0.000)
- (3.000, 0.000, 0.000)
...
- (11.800, 12.900, 0.000)
- (12.200, 12.800, 0.000)
- (12.600, 12.500, 0.000)
- (13.000, 12.100, 0.000)
- (11.000, 13.700, 0.000)
- (11.400, 13.000, 0.000)
- (11.800, 13.900, 0.000)
- (12.200, 13.800, 0.000)
- (12.600, 13.500, 0.000)
- (13.000, 13.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.005 0.010 0.005 0.010 0.005 0.010 0.005 0.010 ... 0.015 0.020 0.025 0.030 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'NCAll' splines:48 control-points:212
- attr 'curve_type' INT8 CURVE
- 3 3 3 3 3 3 3 3 3 3 ... 3 3 3 3 3 3 3 3 3 3
- attr 'cyclic' BOOLEAN CURVE
- 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
- attr 'knots_mode' INT8 CURVE
- 1 1 1 1 1 1 1 1 0 3 ... 1 1 0 1 2 3 0 1 2 3
- attr 'nurbs_order' INT8 CURVE
- 2 2 2 2 2 2 2 2 3 3 ... 2 2 3 3 3 3 4 4 4 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707 1.000 0.707 1.000 0.707 ... 1.000 0.707 1.000 0.707 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (1.000, 0.000, 0.000)
- (-1.000, 1.700, 0.000)
- (1.000, 1.000, 0.000)
- (-1.000, 2.700, 0.000)
- (1.000, 2.000, 0.000)
- (-1.000, 3.700, 0.000)
- (1.000, 3.000, 0.000)
- (2.000, 0.700, 0.000)
- (3.000, 0.000, 0.000)
...
- (11.800, 12.900, 0.000)
- (12.200, 12.800, 0.000)
- (12.600, 12.500, 0.000)
- (13.000, 12.100, 0.000)
- (11.000, 13.700, 0.000)
- (11.400, 13.000, 0.000)
- (11.800, 13.900, 0.000)
- (12.200, 13.800, 0.000)
- (12.600, 13.500, 0.000)
- (13.000, 13.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.005 0.010 0.005 0.010 0.005 0.010 0.005 0.010 ... 0.015 0.020 0.025 0.030 0.005 0.010 0.015 0.020 0.025 0.030
==== Objects: 2
- Obj 'CAll' CURVES data:'CAll'
- pos 4.000, -5.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NCAll' CURVES data:'NCAll'
- pos -12.000, -5.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000

View File

@@ -0,0 +1,2251 @@
==== Curves(new): 96
- Curve 'C220' splines:1 control-points:2
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (1.000, 0.000, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010
- Curve 'C221' splines:1 control-points:2
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (1.000, 0.000, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010
- Curve 'C222' splines:1 control-points:2
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (1.000, 0.000, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010
- Curve 'C223' splines:1 control-points:2
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (1.000, 0.000, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010
- Curve 'C320' splines:1 control-points:3
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (0.000, 0.000, 0.000)
- (1.000, 0.900, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015
- Curve 'C321' splines:1 control-points:3
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (0.000, 0.000, 0.000)
- (1.000, 0.900, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015
- Curve 'C322' splines:1 control-points:3
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (0.000, 0.000, 0.000)
- (1.000, 0.900, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015
- Curve 'C323' splines:1 control-points:3
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (0.000, 0.000, 0.000)
- (1.000, 0.900, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015
- Curve 'C330' splines:1 control-points:3
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 0
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (0.000, 0.000, 0.000)
- (1.000, 0.900, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015
- Curve 'C331' splines:1 control-points:3
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (0.000, 0.000, 0.000)
- (1.000, 0.900, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015
- Curve 'C332' splines:1 control-points:3
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 0
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (0.000, 0.000, 0.000)
- (1.000, 0.900, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015
- Curve 'C333' splines:1 control-points:3
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (0.000, 0.000, 0.000)
- (1.000, 0.900, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015
- Curve 'C420' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'C421' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'C422' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'C423' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'C430' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 0
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'C431' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'C432' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 2
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'C433' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 3
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'C440' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 0
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'C441' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 4
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'C442' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 0
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'C443' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 4
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'C520' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'C521' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'C522' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'C523' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'C530' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 0
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'C531' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'C532' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 4
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'C533' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'C540' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 0
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'C541' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 4
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'C542' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 4
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'C543' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'C620' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'C621' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'C622' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'C623' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'C630' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 0
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'C631' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'C632' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 2
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'C633' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 3
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'C640' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 0
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'C641' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 4
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'C642' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 4
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'C643' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 1
- attr 'knots_mode' INT8 CURVE
- 3
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'NC220' splines:1 control-points:2
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (1.000, 0.000, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010
- Curve 'NC221' splines:1 control-points:2
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (1.000, 0.000, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010
- Curve 'NC222' splines:1 control-points:2
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (1.000, 0.000, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010
- Curve 'NC223' splines:1 control-points:2
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (1.000, 0.000, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010
- Curve 'NC320' splines:1 control-points:3
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (0.000, 0.000, 0.000)
- (1.000, 0.900, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015
- Curve 'NC321' splines:1 control-points:3
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (0.000, 0.000, 0.000)
- (1.000, 0.900, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015
- Curve 'NC322' splines:1 control-points:3
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (0.000, 0.000, 0.000)
- (1.000, 0.900, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015
- Curve 'NC323' splines:1 control-points:3
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (0.000, 0.000, 0.000)
- (1.000, 0.900, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015
- Curve 'NC330' splines:1 control-points:3
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 0
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (0.000, 0.000, 0.000)
- (1.000, 0.900, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015
- Curve 'NC331' splines:1 control-points:3
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 3
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (0.000, 0.000, 0.000)
- (1.000, 0.900, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015
- Curve 'NC332' splines:1 control-points:3
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 2
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (0.000, 0.000, 0.000)
- (1.000, 0.900, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015
- Curve 'NC333' splines:1 control-points:3
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 3
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (0.000, 0.000, 0.000)
- (1.000, 0.900, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015
- Curve 'NC420' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'NC421' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'NC422' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'NC423' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'NC430' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 0
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'NC431' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'NC432' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 2
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'NC433' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 3
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'NC440' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 0
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'NC441' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 3
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'NC442' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 2
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'NC443' splines:1 control-points:4
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 3
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.333, 0.000, 0.000)
- (0.333, 0.900, 0.000)
- (1.000, 0.800, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020
- Curve 'NC520' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'NC521' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'NC522' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'NC523' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'NC530' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 0
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'NC531' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'NC532' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 2
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'NC533' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 3
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'NC540' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 0
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'NC541' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'NC542' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 2
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'NC543' splines:1 control-points:5
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 3
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.500, 0.000, 0.000)
- (0.000, 0.900, 0.000)
- (0.500, 0.800, 0.000)
- (1.000, 0.500, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025
- Curve 'NC620' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'NC621' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'NC622' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'NC623' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 2
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'NC630' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 0
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'NC631' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'NC632' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 2
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'NC633' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 3
- attr 'nurbs_order' INT8 CURVE
- 3
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'NC640' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 0
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'NC641' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 1
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'NC642' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 2
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
- Curve 'NC643' splines:1 control-points:6
- attr 'curve_type' INT8 CURVE
- 3
- attr 'cyclic' BOOLEAN CURVE
- 0
- attr 'knots_mode' INT8 CURVE
- 3
- attr 'nurbs_order' INT8 CURVE
- 4
- attr 'nurbs_weight' FLOAT POINT
- 1.000 0.707 1.000 0.707 1.000 0.707
- attr 'position' FLOAT_VECTOR POINT
- (-1.000, 0.700, 0.000)
- (-0.600, 0.000, 0.000)
- (-0.200, 0.900, 0.000)
- (0.200, 0.800, 0.000)
- (0.600, 0.500, 0.000)
- (1.000, 0.100, 0.000)
- attr 'radius' FLOAT POINT
- 0.005 0.010 0.015 0.020 0.025 0.030
==== Objects: 96
- Obj 'C220' CURVES data:'C220'
- pos 4.000, -5.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C221' CURVES data:'C221'
- pos 4.000, -4.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C222' CURVES data:'C222'
- pos 4.000, -3.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C223' CURVES data:'C223'
- pos 4.000, -2.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C320' CURVES data:'C320'
- pos 7.000, -5.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C321' CURVES data:'C321'
- pos 7.000, -4.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C322' CURVES data:'C322'
- pos 7.000, -3.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C323' CURVES data:'C323'
- pos 7.000, -2.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C330' CURVES data:'C330'
- pos 7.000, 0.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C331' CURVES data:'C331'
- pos 7.000, 1.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C332' CURVES data:'C332'
- pos 7.000, 2.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C333' CURVES data:'C333'
- pos 7.000, 3.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C420' CURVES data:'C420'
- pos 10.000, -5.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C421' CURVES data:'C421'
- pos 10.000, -4.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C422' CURVES data:'C422'
- pos 10.000, -3.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C423' CURVES data:'C423'
- pos 10.000, -2.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C430' CURVES data:'C430'
- pos 10.000, 0.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C431' CURVES data:'C431'
- pos 10.000, 1.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C432' CURVES data:'C432'
- pos 10.000, 2.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C433' CURVES data:'C433'
- pos 10.000, 3.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C440' CURVES data:'C440'
- pos 10.000, 5.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C441' CURVES data:'C441'
- pos 10.000, 6.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C442' CURVES data:'C442'
- pos 10.000, 7.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C443' CURVES data:'C443'
- pos 10.000, 8.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C520' CURVES data:'C520'
- pos 13.000, -5.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C521' CURVES data:'C521'
- pos 13.000, -4.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C522' CURVES data:'C522'
- pos 13.000, -3.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C523' CURVES data:'C523'
- pos 13.000, -2.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C530' CURVES data:'C530'
- pos 13.000, 0.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C531' CURVES data:'C531'
- pos 13.000, 1.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C532' CURVES data:'C532'
- pos 13.000, 2.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C533' CURVES data:'C533'
- pos 13.000, 3.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C540' CURVES data:'C540'
- pos 13.000, 5.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C541' CURVES data:'C541'
- pos 13.000, 6.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C542' CURVES data:'C542'
- pos 13.000, 7.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C543' CURVES data:'C543'
- pos 13.000, 8.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C620' CURVES data:'C620'
- pos 16.000, -5.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C621' CURVES data:'C621'
- pos 16.000, -4.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C622' CURVES data:'C622'
- pos 16.000, -3.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C623' CURVES data:'C623'
- pos 16.000, -2.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C630' CURVES data:'C630'
- pos 16.000, 0.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C631' CURVES data:'C631'
- pos 16.000, 1.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C632' CURVES data:'C632'
- pos 16.000, 2.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C633' CURVES data:'C633'
- pos 16.000, 3.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C640' CURVES data:'C640'
- pos 16.000, 5.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C641' CURVES data:'C641'
- pos 16.000, 6.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C642' CURVES data:'C642'
- pos 16.000, 7.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'C643' CURVES data:'C643'
- pos 16.000, 8.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC220' CURVES data:'NC220'
- pos -12.000, -5.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC221' CURVES data:'NC221'
- pos -12.000, -4.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC222' CURVES data:'NC222'
- pos -12.000, -3.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC223' CURVES data:'NC223'
- pos -12.000, -2.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC320' CURVES data:'NC320'
- pos -9.000, -5.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC321' CURVES data:'NC321'
- pos -9.000, -4.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC322' CURVES data:'NC322'
- pos -9.000, -3.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC323' CURVES data:'NC323'
- pos -9.000, -2.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC330' CURVES data:'NC330'
- pos -9.000, 0.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC331' CURVES data:'NC331'
- pos -9.000, 1.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC332' CURVES data:'NC332'
- pos -9.000, 2.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC333' CURVES data:'NC333'
- pos -9.000, 3.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC420' CURVES data:'NC420'
- pos -6.000, -5.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC421' CURVES data:'NC421'
- pos -6.000, -4.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC422' CURVES data:'NC422'
- pos -6.000, -3.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC423' CURVES data:'NC423'
- pos -6.000, -2.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC430' CURVES data:'NC430'
- pos -6.000, 0.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC431' CURVES data:'NC431'
- pos -6.000, 1.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC432' CURVES data:'NC432'
- pos -6.000, 2.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC433' CURVES data:'NC433'
- pos -6.000, 3.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC440' CURVES data:'NC440'
- pos -6.000, 5.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC441' CURVES data:'NC441'
- pos -6.000, 6.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC442' CURVES data:'NC442'
- pos -6.000, 7.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC443' CURVES data:'NC443'
- pos -6.000, 8.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC520' CURVES data:'NC520'
- pos -3.000, -5.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC521' CURVES data:'NC521'
- pos -3.000, -4.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC522' CURVES data:'NC522'
- pos -3.000, -3.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC523' CURVES data:'NC523'
- pos -3.000, -2.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC530' CURVES data:'NC530'
- pos -3.000, 0.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC531' CURVES data:'NC531'
- pos -3.000, 1.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC532' CURVES data:'NC532'
- pos -3.000, 2.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC533' CURVES data:'NC533'
- pos -3.000, 3.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC540' CURVES data:'NC540'
- pos -3.000, 5.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC541' CURVES data:'NC541'
- pos -3.000, 6.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC542' CURVES data:'NC542'
- pos -3.000, 7.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC543' CURVES data:'NC543'
- pos -3.000, 8.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC620' CURVES data:'NC620'
- pos 0.000, -5.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC621' CURVES data:'NC621'
- pos 0.000, -4.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC622' CURVES data:'NC622'
- pos 0.000, -3.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC623' CURVES data:'NC623'
- pos 0.000, -2.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC630' CURVES data:'NC630'
- pos 0.000, 0.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC631' CURVES data:'NC631'
- pos 0.000, 1.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC632' CURVES data:'NC632'
- pos 0.000, 2.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC633' CURVES data:'NC633'
- pos 0.000, 3.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC640' CURVES data:'NC640'
- pos 0.000, 5.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC641' CURVES data:'NC641'
- pos 0.000, 6.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC642' CURVES data:'NC642'
- pos 0.000, 7.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000
- Obj 'NC643' CURVES data:'NC643'
- pos 0.000, 8.000, 0.000
- rot 0.000, 0.000, 0.000 (XYZ)
- scl 1.000, 1.000, 1.000

View File

@@ -895,9 +895,10 @@ class USDExportTest(AbstractUSDTest):
self.assertEqual(self.round_vector(usd_extent[0]), extent[0])
self.assertEqual(self.round_vector(usd_extent[1]), extent[1])
def check_nurbs_curve(prim, cyclic, orders, vert_counts, knots_count, extent):
def check_nurbs_curve(prim, cyclic, orders, vert_counts, weights, knots_count, extent):
self.assertEqual(prim.GetOrderAttr().Get(), orders)
self.assertEqual(prim.GetCurveVertexCountsAttr().Get(), vert_counts)
self.assertEqual(self.round_vector(prim.GetPointWeightsAttr().Get()), weights)
self.assertEqual(prim.GetWidthsInterpolation(), "vertex")
knots = prim.GetKnotsAttr().Get()
usd_extent = prim.GetExtentAttr().Get()
@@ -936,11 +937,14 @@ class USDExportTest(AbstractUSDTest):
# Contains 2 NURBS curves
curve = UsdGeom.NurbsCurves(stage.GetPrimAtPath("/root/NurbsCurve/NurbsCurve"))
check_nurbs_curve(curve, False, [4, 4], [6, 6], 10, [[-1.75, -2.6891, -1.0117], [3.0896, 1.9583, 1.0293]])
weights = [1] * 12
check_nurbs_curve(
curve, False, [4, 4], [6, 6], weights, 10, [[-1.75, -2.6891, -1.0117], [3.0896, 1.9583, 1.0293]])
# Contains 1 NURBS curve
curve = UsdGeom.NurbsCurves(stage.GetPrimAtPath("/root/NurbsCircle/NurbsCircle"))
check_nurbs_curve(curve, True, [3], [8], 13, [[-2.0, -2.0, -1.0], [2.0, 2.0, 1.0]])
weights = self.round_vector([1, math.sqrt(2) / 2] * 5)
check_nurbs_curve(curve, True, [3], [10], weights, 13, [[-2, -2, -1], [2, 2, 1]])
def test_export_animation(self):
bpy.ops.wm.open_mainfile(filepath=str(self.testdir / "usd_anim_test.blend"))

View File

@@ -2018,9 +2018,23 @@ class USDImportComparisonTest(unittest.TestCase):
from modules import io_report
report = io_report.Report("USD Import", self.output_dir, comparisondir, comparisondir.joinpath("reference"))
io_report.Report.context_lines = 8
bpy.utils.register_class(CompareTestSupportHook)
for input_file in input_files:
with self.subTest(pathlib.Path(input_file).stem):
input_file_path = pathlib.Path(input_file)
io_report.Report.side_to_print_single_line = 5
io_report.Report.side_to_print_multi_line = 3
CompareTestSupportHook.reset_config()
if input_file_path.name in ("nurbs-gen-single.usda", "nurbs-gen-multiple.usda", "nurbs-custom.usda"):
CompareTestSupportHook.do_curve_rename = True
io_report.Report.side_to_print_single_line = 10
io_report.Report.side_to_print_multi_line = 10
with self.subTest(input_file_path.stem):
bpy.ops.wm.open_mainfile(filepath=str(self.testdir / "empty.blend"))
ok = report.import_and_check(
input_file, lambda filepath, params: bpy.ops.wm.usd_import(
@@ -2028,9 +2042,32 @@ class USDImportComparisonTest(unittest.TestCase):
if not ok:
self.fail(f"{input_file.stem} import result does not match expectations")
bpy.utils.unregister_class(CompareTestSupportHook)
report.finish("io_usd_import")
class CompareTestSupportHook(bpy.types.USDHook):
bl_idname = "CompareTestSupportHook"
bl_label = "Support some Comparison "
do_curve_rename = False
@staticmethod
def reset_config():
CompareTestSupportHook.do_curve_rename = False
@staticmethod
def on_import(context):
prim_map = context.get_prim_map()
if CompareTestSupportHook.do_curve_rename:
for prim_path, objects in prim_map.items():
if isinstance(objects[0], bpy.types.Object):
objects[0].name = prim_path.name
elif isinstance(objects[0], bpy.types.Curves):
objects[0].name = prim_path.GetParentPath().name
class GetPrimMapUsdImportHook(bpy.types.USDHook):
bl_idname = "get_prim_map_usd_import_hook"
bl_label = "Get Prim Map Usd Import Hook"