Skip to content

Commit 873ecc6

Browse files
Removed to-be-deprecated attributes
1 parent 3690483 commit 873ecc6

4 files changed

Lines changed: 17 additions & 835 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
## Features
44

55
- Added `NewtonVbdSceneAPI`, which extends `NewtonSceneAPI` with configuration for Newton's VBD (Vertex Block Descent) solver.
6-
- Exposes common (`newton:vbd:`), particle (`newton:vbd:particle:`), and rigid/AVBD (`newton:vbd:rigid:`) solver parameters.
6+
- Exposes a minimal rigid/AVBD attribute set under `newton:vbd:rigid:` (`contactHistory`, joint stiffness, joint damping).
77
- Applying `NewtonVbdSceneAPI` implicitly applies `NewtonSceneAPI` as well.
88

99
# 0.3.1

newton_usd_schemas/generatedSchema.usda

Lines changed: 8 additions & 332 deletions
Original file line numberDiff line numberDiff line change
@@ -344,301 +344,11 @@ class "NewtonVbdSceneAPI" (
344344
doc = "Provides Newton's VBD (Vertex Block Descent) solver configuration."
345345
)
346346
{
347-
uniform float newton:vbd:frictionEpsilon = 0.01 (
348-
doc = """Threshold to smooth small relative velocities in friction computation.
349-
350-
Applied to both particle and rigid body contacts. Larger values smooth friction over a
351-
wider range of small relative velocities.
352-
353-
Range: [0, inf)
354-
Units: distance / seconds"""
355-
limits = {
356-
dictionary hard = {
357-
float minimum = 0
358-
}
359-
}
360-
)
361-
362-
uniform bool newton:vbd:particle:selfContactEnabled = false (
363-
doc = """Whether to enable self-contact detection for particles.
364-
365-
The other `newton:vbd:particle:` self-contact attributes are only consulted when this is true."""
366-
)
367-
368-
uniform float newton:vbd:particle:selfContactRadius = 0.2 (
369-
doc = """Distance at which vertex-triangle and edge-edge pairs begin to interact.
370-
371-
Only consulted when `newton:vbd:particle:selfContactEnabled` is true.
372-
373-
Range: [0, inf)
374-
Units: distance"""
375-
limits = {
376-
dictionary hard = {
377-
float minimum = 0
378-
}
379-
}
380-
)
381-
382-
uniform float newton:vbd:particle:selfContactMargin = 0.2 (
383-
doc = """Distance at which vertex-triangle and edge-edge pairs are considered for contact generation.
384-
385-
Should be larger than `newton:vbd:particle:selfContactRadius` to avoid missing contacts.
386-
Only consulted when `newton:vbd:particle:selfContactEnabled` is true.
387-
388-
Range: [0, inf)
389-
Units: distance"""
390-
limits = {
391-
dictionary hard = {
392-
float minimum = 0
393-
}
394-
}
395-
)
396-
397-
uniform float newton:vbd:particle:conservativeBoundRelaxation = 0.85 (
398-
doc = """Relaxation factor for conservative penetration-free projection.
399-
400-
Lower values improve stability but slow convergence.
401-
402-
Range: [0, 1]
403-
Units: dimensionless"""
404-
limits = {
405-
dictionary hard = {
406-
float minimum = 0
407-
float maximum = 1
408-
}
409-
}
410-
)
411-
412-
uniform int newton:vbd:particle:collisionDetectionInterval = 0 (
413-
doc = """Frequency of particle self-contact detection.
414-
415-
A value less than 0 runs detection once before initialization. A value of 0 runs it twice:
416-
once before and once after initialization. A value n >= 1 runs it before every n iterations.
417-
Only consulted when `newton:vbd:particle:selfContactEnabled` is true.
418-
419-
Range: [-1, inf)
420-
Units: dimensionless"""
421-
)
422-
423-
uniform float newton:vbd:particle:edgeParallelEpsilon = 1e-5 (
424-
doc = """Threshold to detect near-parallel edges in edge-edge collision handling.
425-
426-
Only consulted when `newton:vbd:particle:selfContactEnabled` is true.
427-
428-
Range: [0, inf)
429-
Units: dimensionless"""
430-
limits = {
431-
dictionary hard = {
432-
float minimum = 0
433-
}
434-
}
435-
)
436-
437-
uniform int newton:vbd:particle:topologicalContactFilterThreshold = 2 (
438-
doc = """Maximum topological distance, in rings, under which candidate self-contacts are discarded.
439-
440-
Higher values tolerate contacts between more closely connected mesh elements. Values larger
441-
than 3 significantly increase computation time. Only consulted when
442-
`newton:vbd:particle:selfContactEnabled` is true.
443-
444-
Range: [0, inf)
445-
Units: dimensionless"""
446-
limits = {
447-
dictionary hard = {
448-
int minimum = 0
449-
}
450-
}
451-
)
452-
453-
uniform float newton:vbd:particle:restShapeContactExclusionRadius = 0.0 (
454-
doc = """Rest separation below which topologically close candidate contacts are ignored.
455-
456-
Evaluated in the rest configuration. Only consulted when
457-
`newton:vbd:particle:selfContactEnabled` is true.
458-
459-
Range: [0, inf)
460-
Units: distance"""
461-
limits = {
462-
dictionary hard = {
463-
float minimum = 0
464-
}
465-
}
466-
)
467-
468-
uniform float newton:vbd:rigid:avbdAlpha = 0.95 (
469-
doc = """C0 stabilization strength for AVBD constraints (C_stab = C - alpha * C0).
470-
471-
Used as the default for joints and body-body contacts unless overridden by
472-
`newton:vbd:rigid:avbdJointAlpha` or `newton:vbd:rigid:avbdContactAlpha`.
473-
474-
Range: [0, 1]
475-
Units: dimensionless"""
476-
limits = {
477-
dictionary hard = {
478-
float minimum = 0
479-
float maximum = 1
480-
}
481-
}
482-
)
483-
484-
uniform float newton:vbd:rigid:avbdJointAlpha = -inf (
485-
doc = """Joint-specific override for the AVBD C0 stabilization strength.
486-
487-
If set to -inf, `newton:vbd:rigid:avbdAlpha` is used instead.
488-
489-
Range: [0, 1]
490-
Units: dimensionless"""
491-
limits = {
492-
dictionary soft = {
493-
float minimum = 0
494-
float maximum = 1
495-
}
496-
}
497-
)
498-
499-
uniform float newton:vbd:rigid:avbdContactAlpha = -inf (
500-
doc = """Body-body contact override for the AVBD C0 stabilization strength.
501-
502-
If set to -inf, `newton:vbd:rigid:avbdAlpha` is used instead.
503-
504-
Range: [0, 1]
505-
Units: dimensionless"""
506-
limits = {
507-
dictionary soft = {
508-
float minimum = 0
509-
float maximum = 1
510-
}
511-
}
512-
)
513-
514-
uniform float newton:vbd:rigid:avbdBeta = 0.0 (
515-
doc = """Penalty stiffness ramp rate for AVBD constraints.
516-
517-
Each iteration the penalty stiffness is incremented by this rate times the constraint
518-
violation, then clamped to its stiffness ceiling (k = min(k_max, k + beta * |C|)). A value
519-
of 0 disables ramping (fixed penalty stiffness). This single value feeds both the linear and
520-
angular ramps, which have different units (force / (distance * distance) and
521-
torque / (radian * radian)), so it carries no single physical unit. Use
522-
`newton:vbd:rigid:avbdLinearBeta` and `newton:vbd:rigid:avbdAngularBeta` for unit-correct
523-
tuning.
524-
525-
Range: [0, inf)
526-
Units: mixed (feeds both linear and angular ramps)"""
527-
limits = {
528-
dictionary hard = {
529-
float minimum = 0
530-
}
531-
}
532-
)
533-
534-
uniform float newton:vbd:rigid:avbdLinearBeta = -inf (
535-
doc = """Linear override for the AVBD penalty ramp rate.
536-
537-
The linear penalty stiffness is incremented each iteration by this rate times the linear
538-
constraint violation. If set to -inf, `newton:vbd:rigid:avbdBeta` is used instead.
539-
540-
Range: [0, inf)
541-
Units: force / (distance * distance)"""
542-
limits = {
543-
dictionary soft = {
544-
float minimum = 0
545-
}
546-
}
547-
)
548-
549-
uniform float newton:vbd:rigid:avbdAngularBeta = -inf (
550-
doc = """Angular override for the AVBD penalty ramp rate.
551-
552-
The angular penalty stiffness is incremented each iteration by this rate times the angular
553-
constraint violation. If set to -inf, `newton:vbd:rigid:avbdBeta` is used instead.
554-
555-
Range: [0, inf)
556-
Units: torque / (radian * radian)"""
557-
limits = {
558-
dictionary soft = {
559-
float minimum = 0
560-
}
561-
}
562-
)
563-
564-
uniform float newton:vbd:rigid:avbdGamma = 0.999 (
565-
doc = """Per-step decay factor for penalty stiffness and persisted hard-mode lambda.
566-
567-
Lower values decay faster, improving stability at the cost of slower convergence.
568-
569-
Range: [0, 1]
570-
Units: dimensionless"""
571-
limits = {
572-
dictionary hard = {
573-
float minimum = 0
574-
float maximum = 1
575-
}
576-
}
577-
)
578-
579347
uniform bool newton:vbd:rigid:contactHistory = false (
580348
doc = """Whether to persist body-body contact state across steps for warm-starting."""
581349
)
582350

583-
uniform float newton:vbd:rigid:contactStickMotionEps = 1e-4 (
584-
doc = """Tangential contact residual threshold for marking body-body contacts as sticking.
585-
586-
A value of 0 disables sticky flags while preserving penalty warm-starting.
587-
588-
Range: [0, inf)
589-
Units: distance"""
590-
limits = {
591-
dictionary hard = {
592-
float minimum = 0
593-
}
594-
}
595-
)
596-
597-
uniform float newton:vbd:rigid:contactStickFreezeTranslationEps = 1e-4 (
598-
doc = """World-space translation threshold for the deadzone snap on sticking contacts.
599-
600-
A value of 0 disables translation snapping.
601-
602-
Range: [0, inf)
603-
Units: distance"""
604-
limits = {
605-
dictionary hard = {
606-
float minimum = 0
607-
}
608-
}
609-
)
610-
611-
uniform float newton:vbd:rigid:contactStickFreezeAngularEps = 1e-4 (
612-
doc = """Angular threshold for the deadzone snap on sticking contacts.
613-
614-
A value of 0 disables angular snapping.
615-
616-
Range: [0, inf)
617-
Units: radians"""
618-
limits = {
619-
dictionary hard = {
620-
float minimum = 0
621-
}
622-
}
623-
)
624-
625-
uniform float newton:vbd:rigid:contactKStart = 100.0 (
626-
doc = """Body-body and body-particle contact penalty seed for AVBD ramping.
627-
628-
Inert unless the linear beta (`newton:vbd:rigid:avbdLinearBeta`, or the
629-
`newton:vbd:rigid:avbdBeta` fallback) is greater than zero; otherwise the penalty stiffness
630-
is fixed at the contact stiffness.
631-
632-
Range: [0, inf)
633-
Units: force / distance"""
634-
limits = {
635-
dictionary hard = {
636-
float minimum = 0
637-
}
638-
}
639-
)
640-
641-
uniform float newton:vbd:rigid:jointLinearKe = 100000.0 (
351+
uniform float newton:vbd:rigid:jointLinearStiffness = 100000.0 (
642352
doc = """Penalty stiffness ceiling for structural linear joint constraints.
643353

644354
Range: [0, inf)
@@ -650,7 +360,7 @@ class "NewtonVbdSceneAPI" (
650360
}
651361
)
652362

653-
uniform float newton:vbd:rigid:jointAngularKe = 100000.0 (
363+
uniform float newton:vbd:rigid:jointAngularStiffness = 100000.0 (
654364
doc = """Penalty stiffness ceiling for structural angular joint constraints.
655365

656366
Range: [0, inf)
@@ -662,57 +372,23 @@ class "NewtonVbdSceneAPI" (
662372
}
663373
)
664374

665-
uniform float newton:vbd:rigid:jointLinearKStart = 100.0 (
666-
doc = """Linear joint penalty seed for AVBD ramping.
667-
668-
Inert unless the linear beta is greater than zero; otherwise the penalty stiffness is fixed
669-
at `newton:vbd:rigid:jointLinearKe`.
375+
uniform float newton:vbd:rigid:jointLinearDamping = 0.0 (
376+
doc = """Absolute damping coefficient for linear joint constraints.
670377

671378
Range: [0, inf)
672-
Units: force / distance"""
673-
limits = {
674-
dictionary hard = {
675-
float minimum = 0
676-
}
677-
}
678-
)
679-
680-
uniform float newton:vbd:rigid:jointAngularKStart = 10.0 (
681-
doc = """Angular joint penalty seed for AVBD ramping.
682-
683-
Inert unless the angular beta is greater than zero; otherwise the penalty stiffness is fixed
684-
at `newton:vbd:rigid:jointAngularKe`.
685-
686-
Range: [0, inf)
687-
Units: torque / radian"""
688-
limits = {
689-
dictionary hard = {
690-
float minimum = 0
691-
}
692-
}
693-
)
694-
695-
uniform float newton:vbd:rigid:jointLinearKd = 0.0 (
696-
doc = """Stiffness-proportional Rayleigh damping coefficient for linear joint constraints.
697-
698-
Scales the linear penalty stiffness to form the damping term, so it has units of time.
699-
700-
Range: [0, inf)
701-
Units: seconds"""
379+
Units: force * time / distance"""
702380
limits = {
703381
dictionary hard = {
704382
float minimum = 0
705383
}
706384
}
707385
)
708386

709-
uniform float newton:vbd:rigid:jointAngularKd = 0.0 (
710-
doc = """Stiffness-proportional Rayleigh damping coefficient for angular joint constraints.
711-
712-
Scales the angular penalty stiffness to form the damping term, so it has units of time.
387+
uniform float newton:vbd:rigid:jointAngularDamping = 0.0 (
388+
doc = """Absolute damping coefficient for angular joint constraints.
713389

714390
Range: [0, inf)
715-
Units: seconds"""
391+
Units: torque * time / radian"""
716392
limits = {
717393
dictionary hard = {
718394
float minimum = 0

0 commit comments

Comments
 (0)