Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gonchar/GoncharKit
RealityKit helper functions for visionOS
https://github.com/gonchar/GoncharKit
apple realitykit utils visionos
Last synced: about 1 month ago
JSON representation
RealityKit helper functions for visionOS
- Host: GitHub
- URL: https://github.com/gonchar/GoncharKit
- Owner: gonchar
- License: mit
- Created: 2023-11-10T13:01:57.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-09-15T16:18:31.000Z (3 months ago)
- Last Synced: 2024-09-15T17:40:22.107Z (3 months ago)
- Topics: apple, realitykit, utils, visionos
- Language: Swift
- Homepage: https://twitter.com/the_gonchar
- Size: 36.1 KB
- Stars: 134
- Watchers: 5
- Forks: 9
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- Awesome-RealityKit - GoncharKit - RealityKit helper functions for visionOS (Projects / Community)
README
# RealityKit helper functions for visionOS
In the spirit of collaboration and knowledge sharing, I've decided to open source a selection of helper functions that I've developed during my journey of creating the first visionOS experience using RealityKit.
## Outline Mesh Generation
## DoubleSided materials
## Skeleton Visualization
```
yourEntity?.visualizeBones()
```# All extension functions for RealityKit Entity
* `visualizeBones(size: Float = 0.5)`
* Visualizes the bones of a model entity by creating a debug entity with a cone mesh representing each bone.
* `createEntityBox(_ color: UIColor, size: Float) -> Entity`
* Creates a box-shaped entity with the specified color and size.
* `update(shaderGraphMaterial oldMaterial: ShaderGraphMaterial, _ handler: (inout ShaderGraphMaterial) throws -> Void) rethrows`
* Updates the shader graph material of the entity by applying the changes defined in the handler closure.
* `replaceAndStoreOldMaterials(material: Material, copyPBRInputs: Bool = false)`
* Replaces the current materials of the entity with a new material and optionally copies the inputs from the physically based rendering (PBR) materials.
* `restoreOriginalMaterials()`
* Restores the original materials of the entity that were saved before replacement.
* `saveMaterialParam(paramName: String)`
* Saves the parameter value of the shader graph material with the given name.
* `getMaterialParam(paramName: String) -> MaterialParameters.Value?`
* Retrieves the value of the material parameter with the given name.
* `setMaterialParamWeight(paramName: String, value: Float)`
* Sets the weight of the material parameter with the given name, multiplying it by the saved value if it exists.
* `setMaterialParam(paramName: String, value: MaterialParameters.Value)`
* Sets the value of the material parameter with the given name.
* `playAllAnimations(shouldLoop: Bool = false)`
* Plays all available animations for the entity, with an option to loop them indefinitely.
* `distance(from other: Entity) -> Float`
* Calculates the distance between the entity and another entity.
* `distance(from point: SIMD3) -> Float`
* Calculates the distance between the entity and a point in 3D space.
* `isDistanceWithinThreshold(from other: Entity, max: Float) -> Bool`
* Checks if the distance between the entity and another entity is within a specified threshold.
* `isDistanceWithinThreshold(from point: SIMD3, max: Float) -> Bool`
* Checks if the distance between the entity and a point in 3D space is within a specified threshold.
* `findParentWithName(_ findName: String) -> Entity?`
* Searches for a parent entity with the specified name.
* `findParentWithAnyComponents(withComponents componentClasses: [Component.Type]) -> Entity?`
* Searches for a parent entity that has any of the specified components.
* `findParentWithComponent(withComponent componentClass: T.Type) -> Entity?`
* Searches for a parent entity that has the specified component type.
* `findFirstComponent(withComponent componentClass: T.Type) -> T?`
* Searches for the first component of the specified type in the entity hierarchy.
* `hasComponentInHierarchy(withComponent componentClass: T.Type) -> Bool`
* Checks if any entity in the hierarchy has the specified component type.
* `forEachDescendant(withComponent componentClass: T.Type, _ closure: (Entity, T) -> Void)`
* Iterates over all descendants with the specified component type and performs the given closure.
* `forEach(withComponent componentClass: T.Type, _ closure: (Entity, T) -> Void)`
* Iterates over the entity and its children with the specified component type and performs the given closure.
* `removeComponentFromHierarchy(componentType: Component.Type)`
* Removes the specified component type from the entity and its descendants.
* `fixObjectPivot() -> Entity?`
* Fixes the pivot of the entity by creating a new entity at the visual center and re-parenting the original entity to it.
* `generateCollisionsForEnabledOnly()`
* Generates collision shapes for the entity and its children if they are enabled.
* `generatePreciseCollisionsForEachEnabled(withComponent componentClass: T.Type) async`
* Asynchronously generates precise collision shapes for each enabled entity with the specified component type.
* `generatePreciseCollisionShapes() async`
* Asynchronously generates precise collision shapes for the entity if it is enabled.
* `stopEmittingParticleEmitters()`
* Stops all particle emitters from emitting particles in the entity hierarchy.
* `removeAllParticleEmitters()`
* Removes all particle emitter components from the entity hierarchy.
* `playAllParticles()`
* Starts emitting particles for all particle emitters in the entity hierarchy.
* `addMeshOutline(outlineMaterial: RealityKit.Material, offset: Float)`
* Adds an outline to the mesh of the entity using the specified material and offset.
* `makeMeshResourcesUnique()`
* Makes the mesh resources of the entity unique to avoid sharing them with other entities.
* `addDoubleSide()`
* Adds double-sided rendering to the entity's mesh.
* `addDoubleSide(otherSideMaterial: RealityKit.Material, ignoreComponentTypes: [Component.Type]?)`
* Adds double-sided rendering to the entity's mesh with the specified material for the other side, ignoring entities with specified component types.