Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
18 changes: 17 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,20 @@
# strands
# Strands

Unity prototypes.

Download and install Unity:

Go to https://unity3d.com/get-unity/update and click `Download Installer`.

Latest version is usually recommended, otherwise read the project description to install a compatible Unity version.

# String Theory

In Unity click `Open` and select the `String Theory` directory at the root of this repository.

* Tested with version 2018.2.3f1

# Development

Como hacer fork del repo:
https://blog.scottlowe.org/2015/01/27/using-fork-branch-git-workflow/
Expand Down
8 changes: 8 additions & 0 deletions String Theory/Assets/Obi.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

206 changes: 206 additions & 0 deletions String Theory/Assets/Obi/CHANGELOG_rope.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
# Change Log
All notable changes to “Obi - Advanced ropes for Unity” will be documented in this file.

## [3.5]

### Added
- Support for 32 and 64 bit Linux architectures.
- Two-way rigidbody interaction for local-space solvers.
- Added world inertia scale.
- ObiCollider now takes a reference to a Collider, enabling the use of multiple colliders in the same GameObject.

### Changed
- Separated world velocity scale into linear and angular components.
- World velocity scale is no longer specified per-actor, but per-solver.
- Better ObiProfiler: it now shows a per-thread pyramid diagram of internal jobs, with more human-readable names.

### Removed
- Solvers no longer have a Collision Layers property. All solvers share the same colliders. Note that you can still use phases to ignore collisions with certain colliders.
- Local space solvers no longer need their own copy of each ObiCollider in the scene, they can all share the same colliders. This results in much higher performance for multiple local-space solvers.

### Fixed
- Added (float3x3) typecast to particle shaders, to be GLES friendly.

## [3.4.1]

### Added
- "Thickness from particles" now works in Custom Mesh render mode.
- Custom Mesh mode now has a "volume scaling" parameter that squashes and stretches the mesh together with the rope.

## [3.4]

### Added
- Perspective-correct particle rendering.
- ObiParticleRenderer now supports custom shaders for rendering.

### Fixed
- Bug that required to disable and re-enable ObiParticleRenderer when moving the actor to a new solver.
- Bug that caused twitching when performing more than 1 physics step per frame when using handles.

## [3.3.1]

### Fixed
- Removed unused variable warnings introduced in 3.3
- Fixed null ref exception when creating a new distance field asset.
- Fixed crash when using multiple solvers in different update modes.
- Fixed some sample scenes lacking collision due to missing distance field.

## [3.3]

### Added
- Support for 2D rigidbody coupling has been brought back.
- Added substepping to the core solver. This allows to update each solver at a different effective frequency, and decouple the Obi
physics loop from Unity’s.
- New implementation of fine-grained parallel tasks in core solver, that boosts performance up to x1.5.
- Support for a new type of rope rendering, that can deform any mesh to follow the rope curve.
- Support for a new collision primitive: distance fields.
- Support for per-particle coloring of rope.
- ObiCollider automatically creates ObiRigidbody component if needed when reparenting it.
- Helper script (ObiKinematicVelocities) that calculates angular and linear velocities for kinematic rigidbodies that are transformed around. Useful for continuous collision detection and friction effects against objects that are being moved around using their transform instead of forces.

### Changed
- Near-zero garbage generation for OnCollision and ObFluidUpdated solver events.
- Near-zero garbage generation for rope rendering.
- Constraints.GetBatches() now returns an IEnumerable. This means it cannot be accesed by index. There’s a helper method GetFirstBatch() that returns
the correctly typed first batch, or null if there’s none.

### Fixed
- Null reference exception in pin constraints when visualization is enabled.
- Bug that caused asleep particles to miss collisions upon reactivation.
- Bug that caused copying a rope to “steal“ the mesh from the original one.

## [3.2]
### Added
- Support for CapsuleCollider2D.

### Changed
- Rope is still rendered (though not simulated) when the ObiRope component is disabled.
- Colliders/rigidbodies are no longer copied over to the C++ library each frame. Instead, only colliders that have their transform or any collision-related property altered are copied to the solver. This greatly improves performance when many colliders are present, and greatly reduces memory allocation and GC activity.
- AllocateParticles() and FreeParticles() have been merged with AddActor() and RemoveActor() respectively. A new per-particle array “particleToActor” makes it faster and easier to know which actor a particle belongs to.

### Removed
- ObiCollisionGroup has disappeared. It is no longer necessary to manually add colliders to a group, instead each ObiSolver automatically picks up all ObiColliders in a given layer.
- MeshColliders are now always treated as two-sided thin concave meshes. Solid and one-sided modes have disappeared.

### Fixed
- Android issue that prevented some devices from finding the Oni library.
- Removed redundant menu items.

## [3.1.1]
### Added
- New “Line” rendering mode for ropes. This will render the rope as a camera-oriented quad strip, similar to what Unity’s LineRenderer does. This is useful for lightweight rendering and 2D games.
- Particle renderer is now much faster and also allocates less memory.
- New “hierarchical” method to generate tether constraints: this method generates more constraints than the traditional “anchor to fixed” approach, but works in the general case even if there are no fixed particles.

### Changed
- Installation is no longer required. Obi now works right out of the box, so the installation window has been removed, and the “Editor default resources” and “Gizmos” folders removed.

## [3.1]
### Added
- You can now choose where should the solver be updated: FixedUpdate, AfterFixedUpdate, or LateUpdate.
- Rope rendering now supports variable thickness, based on particle radii. Enabled by default, disable “thickness from particles” to get uniform thickness regardless of particle radii variations.
- Edit-time preview of “smoothness” rope parameter.
- Utility method to calculate actual rope length.
- Support for triggers. A trigger collider will generate contact constraints, but won´t enforce them.
- Contact structs returned by the OnCollision event now include the contact tangent and bitangent vectors.
- Added per-particle layer properties, for finer collision control.

### Changed
- Faster and more accurate rigidbody impulse application, which results in better collision resolution.
- Greatly improved pin constraint stability for large mass ratios.
- ObiColliderGroup’s Colliders and Colliders2D properties are now plain arrays: “colliders” and “colliders2D”.
- Memory allocation for rope mesh generation has been reduced by 90%.
- ObiParticleRenderer memory allocation has been greatly reduced, and its performance improved.
- Pin constraints are now always drawn in particle edit mode, not only when the particles are selected.

### Fixed
- Got rid of warnings related to obsolete platform enums in sample scripts.
- Potential bug in GCHandle deallocation affecting upcoming Unity versions (thanks to the guys at Unity for pointing me at this)
- Tearable pin constraints now work correctly.

## [3.0.1]
### Added
- Support for iOS simulator.
- Faster collision contact generation.

### Fixed
- Crash in Crane scene due to a bug in pin constraints.

## [3.0]

#IMPORTANT: You’ll need to re-generate all your ropes as internal data layout of previous versions is not compatible with this update.
### Added
- Welcome window with automatic installer.
- Upgraded constraint projection to XPBD (extended position-based dynamics). This decouples stiffness and damping from the amount of iterations, resulting in more realistic simulation.
- Solver constraint enforcement order can now be changed. This allows to change the relative importance of constraints.
- The solver now uses a task-based threading system which allows to exploit parallelism between multiple solvers.
- Custom multithreading profiler, that allows to fine-tune performance.
- Optional local-space simulation, for better numerical accuracy in large-scale worlds and greater control.
- ObiStitcher component allows to stitch together separate ropes.
- Added pencil paint mode to particle editor.
- Automatic self-collisions disabling for particles that intersect in rest pose. This allows to set larger particle radii
to ensure better self-collisions, without worrying about constraint fighting.
- Breakable pin constraints.
- Ropes are now tearable, and custom prefabs can be instantiated at both sides of the tear.
- Rope length can be changed at runtime, using the ObiRopeCursor component.
- Procedural curve geometry smoothing.

### Changed
- Actor particle limit is no longer 16384 but 65536, matching Unity’s own vertex limit.
- Particle editor paint brush falloff has ben changed from linear to gaussian.
- Distance constraints’ compression stiffness has been replaced by a slack percentage.
- Performance improvement in mesh colliders and edge colliders.

### Fixed
- Bug in collision detection against terrains.
- Crash in 32-bit windows systems due to memory misalignment.
- Bug that caused slow convergence and excessive jittering for particle-particle sequential contact resolution.
- Bug in hierarchical grid update that caused a crash in some cases when a hash key collision happened.
- Bug in continuous collision detection that caused particles to be pushed to the other side of very thin objects.
- Bug in ray/bounding box intersection test caused by non-IEEE754 compliant SSE division by zero.
- Bug that caused ObiParticleRenderer to ignore camera culling mask, and render in all cameras.
- Bug that caused a crash under certain conditions in 32 bit systems.
- Bug that caused particle property value field to reset to the value of the last particle when painting.
- Fixed collision stabilization bug that caused particles to sink slightly when over a dynamic rigidbody.

## [1.2]

### Added
- Android support.
- Upgraded constraint projection to XPBD (extended position-based dynamics). This decouples stiffness and damping from the amount of iterations.
- Solver constraint enforcement order can now be changed. This allows to change the relative importance of constraints.
- Welcome window with automatic installer.
- Resolution-preserving method to change rope length dynamically.
- Added pencil paint mode to particle editor.
- Optional local-space simulation, for better numerical accuracy in large-scale worlds and greater control.
- Custom multithreading profiler, that allows to fine-tune performance.
- Better particle visualization in editor.
- Breakable pin constraints.

### Changed
- Actor particle limit is no longer 16384 but 65536, matching Unity’s own vertex limit.
- Particle editor paint brush falloff has ben changed from linear to gaussian.
- Distance constraints’ compression stiffness has been replaced by a slack percentage.

### Fixed
- Bug that caused an index out of bounds exception when initializing rope with zero resolution.
- Bug that caused an error message regarding MeshFilter destruction when entering play mode with a rope selected in the hierarchy.
- Bug that prevented the particle editor window from appearing on retina displays.
- 1-frame delay between particle and rigid body physics, which affected pin and collision constraints.

## [1.1]

### Added
- MeshColliders are now fully supported.
- Support for 2D physics, Box2D, Circle2D and Edge2D colliders.
- Chain rendering.
- Sleep threshold that keeps particles fixed in place when their kinetic energy is low.
- Chain constraints, that allow for 100% inextensible ropes.
- Rope thickness, twist, cap sections and section shape can now be changed without the need to re-initialize the rope.
- Required constraint components are automatically removed from the object when removing the rope component in editor.

### Fixed
- Issue with box colliders, that caused incorrect contact generation in corners when using contactOffset.

## [1.0.0] - 2015-07-16
- Initial release.
10 changes: 10 additions & 0 deletions String Theory/Assets/Obi/CHANGELOG_rope.txt.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions String Theory/Assets/Obi/Editor.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions String Theory/Assets/Obi/Editor/CrossPlatformInput.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading