Token导航 LogoToken导航TokenDH.com
研究检索需要联网github未标认证来源可访问许可证需确认审计通过

axiom-scenekit-refAxiom 场景套件参考

Agent Skill

axiom-scenekit-ref 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

3,207

周安装

131

GitHub Stars

873

下载量

1,027
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:axiom-scenekit-ref(Axiom 场景套件参考)
来源仓库:https://github.com/charleswiltgen/axiom
仓库路径:skills/axiom-scenekit-ref
安装命令:
npx skills add https://github.com/charleswiltgen/axiom --skill axiom-scenekit-ref
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/charleswiltgen/axiom --skill axiom-scenekit-ref

简介

提供 SceneKit 到 RealityKit 的 API 映射对照表作为迁移依据。

  • 适用于查找 SCNNode 与 Entity 等核心概念的等效替代方案。
  • 明确标注哪些功能可直接转换而无需重构业务逻辑。
  • 包含场景图与 ECS 架构差异带来的性能特征变化说明。
  • 建议分阶段实施迁移并在测试环境中验证视觉一致性。

SKILL.md

SceneKit API Reference & Migration Mapping

Complete API reference for SceneKit with RealityKit equivalents for every major concept.

When to Use This Reference

Use this reference when:

  • Looking up SceneKit → RealityKit API equivalents during migration
  • Checking specific SceneKit class properties or methods
  • Planning which SceneKit features have direct RealityKit counterparts
  • Understanding architectural differences between scene graph and ECS

Part 1: SceneKit → RealityKit Concept Mapping

Core Architecture

SceneKitRealityKitNotes
SCNSceneRealityViewContent / Entity (root)RealityKit scenes are entity hierarchies
SCNNodeEntityLightweight container in both
SCNViewRealityView (SwiftUI)ARView for UIKit on iOS
SceneView (SwiftUI)RealityViewSceneView deprecated iOS 26
SCNRendererRealityRendererLow-level Metal rendering
Node propertiesComponentsECS separates data from hierarchy
SCNSceneRendererDelegateSystem / SceneEvents.UpdateFrame-level updates
.scn files.usdz / .usda filesConvert with xcrun scntool

Geometry & Rendering

SceneKitRealityKitNotes
SCNGeometryMeshResourceRealityKit generates from code or loads USD
SCNBox, SCNSphere, etc.MeshResource.generateBox(), .generateSphere()Similar built-in shapes
SCNMaterialSimpleMaterial, PhysicallyBasedMaterialPBR-first in RealityKit
SCNMaterial.lightingModel =.physicallyBasedPhysicallyBasedMaterialDefault in RealityKit
SCNMaterial.diffusePhysicallyBasedMaterial.baseColorDifferent property name
SCNMaterial.metalnessPhysicallyBasedMaterial.metallicDifferent property name
SCNMaterial.roughnessPhysicallyBasedMaterial.roughnessSame concept
SCNMaterial.normalPhysicallyBasedMaterial.normalSame concept
Shader modifiersShaderGraphMaterial / CustomMaterialNo direct port — must rewrite
SCNProgram (custom shaders)CustomMaterial with Metal functionsDifferent API surface
SCNGeometrySourceMeshResource.ContentsLow-level mesh data

Transforms & Hierarchy

SceneKitRealityKitNotes
node.positionentity.positionBoth SCNVector3 / SIMD3
node.eulerAnglesentity.orientation (quaternion)RealityKit prefers quaternions
node.scaleentity.scaleBoth SIMD3
node.transformentity.transform4×4 matrix
node.worldTransformentity.transform(relativeTo: nil)World-space transform
node.addChildNode(_:)entity.addChild(_:)Same hierarchy concept
node.removeFromParentNode()entity.removeFromParent()Same concept
node.childNodesentity.childrenChildren collection
node.parententity.parentParent reference
node.childNode(withName:recursively:)entity.findEntity(named:)Named lookup

Lighting

SceneKitRealityKitNotes
SCNLight (.omni)PointLightComponentPoint light
SCNLight (.directional)DirectionalLightComponentSun/directional light
SCNLight (.spot)SpotLightComponentCone light
SCNLight (.area)No direct equivalentUse multiple point lights
SCNLight (.ambient)EnvironmentResource (IBL)Image-based lighting preferred
SCNLight (.probe)EnvironmentResourceEnvironment probes
SCNLight (.IES)No direct equivalentUse light intensity profiles

Camera

SceneKitRealityKitNotes
SCNCameraPerspectiveCamera entityEntity with camera component
camera.fieldOfViewPerspectiveCameraComponent.fieldOfViewInDegreesSame concept
camera.zNear / camera.zFarPerspectiveCameraComponent.near / .farClipping planes
camera.wantsDepthOfFieldPost-processing effectsDifferent mechanism
camera.motionBlurIntensityPost-processing effectsDifferent mechanism
allowsCameraControlCustom gesture handlingNo built-in orbit camera

Physics

SceneKitRealityKitNotes
SCNPhysicsBodyPhysicsBodyComponentComponent-based
.dynamic.dynamicSame mode
.static.staticSame mode
.kinematic.kinematicSame mode
SCNPhysicsShapeCollisionComponent / ShapeResourceSeparate from body in RealityKit
categoryBitMaskCollisionGroupNamed groups vs raw bitmasks
collisionBitMaskCollisionFilterFilter-based
contactTestBitMaskCollisionEvents.Began subscriptionEvent-based contacts
SCNPhysicsContactDelegatescene.subscribe(to: CollisionEvents.Began.self)Combine-style events
SCNPhysicsFieldPhysicsBodyComponent forcesApply forces directly
SCNPhysicsJointPhysicsJointSimilar joint types

Animation

SceneKitRealityKitNotes
SCNActionentity.move(to:relativeTo:duration:)Transform animation
SCNAction.sequenceAnimation chainingLess declarative in RealityKit
SCNAction.groupParallel animationsApply to different entities
SCNAction.repeatForeverAnimationPlaybackController repeatDifferent API
SCNTransaction (implicit)No direct equivalentExplicit animations only
CAAnimation bridgeentity.playAnimation()Load from USD
SCNAnimationPlayerAnimationPlaybackControllerPlayback control
Morph targetsBlend shapes in USDLoad via USD files

Interaction

SceneKitRealityKitNotes
hitTest(_:options:)RealityViewContent.entities(at:)Different API
Gesture recognizers on SCNViewManipulationComponentBuilt-in drag/rotate/scale
allowsCameraControlCustom implementationNo built-in orbit

AR Integration

SceneKitRealityKitNotes
ARSCNViewRealityView + AnchorEntityLegacy → modern
ARSCNViewDelegateAnchorEntity auto-trackingEvent-driven
renderer(_:didAdd:for:)AnchorEntity(.plane)Declarative anchoring
ARWorldTrackingConfigurationSpatialTrackingSessioniOS 18+

Part 2: Scene Graph API

SCNScene

// Loading
let scene = SCNScene(named: "scene.usdz")!
let scene = try SCNScene(url: url, options: [
    .checkConsistency: true,
    .convertToYUp: true
])

// Properties
scene.rootNode                    // Root of node hierarchy
scene.background.contents        // Skybox (UIImage, UIColor, MDLSkyCubeTexture)
scene.lightingEnvironment.contents // IBL environment map
scene.fogStartDistance            // Fog near
scene.fogEndDistance              // Fog far
scene.fogColor                   // Fog color
scene.isPaused                   // Pause simulation

SCNNode

// Creation
let node = SCNNode()
let node = SCNNode(geometry: SCNBox(width: 1, height: 1, length: 1, chamferRadius: 0))

// Transform
node.position = SCNVector3(x, y, z)
node.eulerAngles = SCNVector3(pitch, yaw, roll)
node.scale = SCNVector3(1, 1, 1)
node.simdPosition = SIMD3<Float>(x, y, z)  // SIMD variants available
node.pivot = SCNMatrix4MakeTranslation(0, -0.5, 0) // Offset pivot point

// Visibility
node.isHidden = false
node.opacity = 1.0
node.castsShadow = true
node.renderingOrder = 0   // Lower = rendered first

// Hierarchy
node.addChildNode(child)
node.removeFromParentNode()
node.childNodes
node.childNode(withName: "name", recursively: true)
node.enumerateChildNodes { child, stop in }

Part 3: Materials

Lighting Models

ModelDescriptionUse Case
.physicallyBasedPBR metallic-roughnessRealistic rendering (recommended)
.blinnBlinn-Phong specularSimple shiny surfaces
.phongPhong specularClassic specular highlight
.lambertDiffuse only, no specularMatte surfaces
.constantUnlit, flat colorUI elements, debug visualization
.shadowOnlyInvisible, receives shadowsAR ground plane

Material Properties

let mat = SCNMaterial()
mat.lightingModel = .physicallyBased

// Textures or scalar values
mat.diffuse.contents = UIImage(named: "albedo")    // Base color
mat.metalness.contents = 0.0                        // 0 = dielectric, 1 = metal
mat.roughness.contents = 0.5                        // 0 = mirror, 1 = rough
mat.normal.contents = UIImage(named: "normal")      // Normal map
mat.ambientOcclusion.contents = UIImage(named: "ao") // AO map
mat.emission.contents = UIColor.blue                // Glow
mat.displacement.contents = UIImage(named: "height") // Height map

// Options
mat.isDoubleSided = false        // Render both sides
mat.writesToDepthBuffer = true
mat.readsFromDepthBuffer = true
mat.blendMode = .alpha           // .add, .subtract, .multiply, .screen
mat.transparencyMode = .aOne     // .rgbZero for pre-multiplied alpha

Part 4: Physics

Body Types and Properties

// Dynamic body with custom shape
let shape = SCNPhysicsShape(geometry: SCNSphere(radius: 0.5), options: nil)
let body = SCNPhysicsBody(type: .dynamic, shape: shape)
body.mass = 1.0
body.friction = 0.5
body.restitution = 0.3       // Bounciness
body.damping = 0.1            // Linear damping
body.angularDamping = 0.1     // Angular damping
body.isAffectedByGravity = true
body.allowsResting = true     // Sleep optimization
node.physicsBody = body

// Compound shapes
let compound = SCNPhysicsShape(shapes: [shape1, shape2],
    transforms: [transform1, transform2])

// Concave (static only)
let concave = SCNPhysicsShape(geometry: mesh, options: [
    .type: SCNPhysicsShape.ShapeType.concavePolyhedron
])

Joint Types

JointDescription
SCNPhysicsHingeJointSingle-axis rotation (door)
SCNPhysicsBallSocketJointFree rotation around point (pendulum)
SCNPhysicsSliderJointLinear movement along axis (drawer)
SCNPhysicsConeTwistJointLimited rotation (ragdoll limb)

Part 5: Animation API

SCNAction Catalog

CategoryActions
Movementmove(by:duration:), move(to:duration:)
Rotationrotate(by:around:duration:), rotateTo(x:y:z:duration:)
Scalescale(by:duration:), scale(to:duration:)
FadefadeIn(duration:), fadeOut(duration:), fadeOpacity(to:duration:)
Visibilityhide(), unhide()
AudioplayAudio(source:waitForCompletion:)
Customrun {node in}, customAction(duration:action:)
Compositionsequence([]), group([]), repeat(_:count:), repeatForever(_:)
Controlwait(duration:), removeFromParentNode()

Timing Functions

action.timingMode = .linear        // Default
action.timingMode = .easeIn        // Slow start
action.timingMode = .easeOut       // Slow end
action.timingMode = .easeInEaseOut // Slow start and end
action.timingFunction = { t in     // Custom curve
    return t * t  // Quadratic ease-in
}

Part 6: Constraints

ConstraintPurpose
SCNLookAtConstraintNode always faces target
SCNBillboardConstraintNode always faces camera
SCNDistanceConstraintMaintains min/max distance
SCNReplicatorConstraintCopies transform of target
SCNAccelerationConstraintSmooths transform changes
SCNSliderConstraintLocks to axis
SCNIKConstraintInverse kinematics chain
let lookAt = SCNLookAtConstraint(target: targetNode)
lookAt.isGimbalLockEnabled = true  // Prevent roll
lookAt.influenceFactor = 0.8       // Partial constraint
node.constraints = [lookAt]

In RealityKit: No direct constraint system. Implement with System update logic or entity.look(at:from:relativeTo:).


Part 7: Scene Configuration

SCNView Configuration

PropertyDefaultDescription
antialiasingMode.multisampling4XMSAA level
preferredFramesPerSecond60Target frame rate
allowsCameraControlfalseBuilt-in orbit/pan/zoom
autoenablesDefaultLightingfalseAdd default light if none
showsStatisticsfalseFPS/node/draw count overlay
isTemporalAntialiasingEnabledfalseTAA smoothing
isJitteringEnabledfalseTemporal jitter for TAA
debugOptions[].showPhysicsShapes, .showBoundingBoxes, .renderAsWireframe

Resources

WWDC: 2014-609, 2014-610, 2017-604, 2019-612

Docs: /scenekit, /scenekit/scnscene, /scenekit/scnnode, /scenekit/scnmaterial, /scenekit/scnphysicsbody, /scenekit/scnaction

Skills: axiom-scenekit, axiom-realitykit, axiom-realitykit-ref

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

36.06%
按下载量换算370

Claude

31.13%
按下载量换算320

Cursor

18.86%
按下载量换算194

Gemini CLI

9.83%
按下载量换算101

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills