SCNNode into SKScene is deformed when hit an object

Into a SKScene, I add a SCNSphere as a child of SKShapeNode, as depicted below. When the sphere hit another node (the fence in the example) the sphere is deformed as it were elastic.

I didn't found any information about elastic properties.

Someone know a way to avoid the deformation?

import SwiftUI
import SpriteKit
import SceneKit
@main struct MyApp: App
{
	var body: some Scene
	{
		WindowGroup {SpriteView(scene: GameSceneSK(size: UIScreen.main.bounds.size))}
	}
}
class GameSceneSK: SKScene
{
	override func sceneDidLoad() {
		var fencePoints = [
			CGPoint(x: 300, y: 0), CGPoint(x: 300, y: 400), CGPoint(x: 0, y: 400)
		]
		let fence = SKShapeNode(points: &fencePoints,
								count: fencePoints.count)
		fence.physicsBody = SKPhysicsBody(edgeChainFrom: fence.path!)
		addChild(fence)
		let sphereGeometry = SCNSphere(radius: 20)
		let sphereNode = SCNNode(geometry: sphereGeometry)
		let sphereScnScene = SCNScene()
		sphereScnScene.rootNode.addChildNode(sphereNode)
		let ball3D = SK3DNode(viewportSize: CGSize(width: 40,
												   height: 40))
		ball3D.scnScene = sphereScnScene
		let ball = SKShapeNode(circleOfRadius: 20)
		ball.physicsBody = SKPhysicsBody(circleOfRadius: 20)
		ball.addChild(ball3D)
		physicsWorld.gravity = CGVector(dx: 0.2, dy: 0.2)
		addChild(ball)
	}
}
Answered by DTS Engineer in 814782022

Hello @Luca_65,

There is a relationship between the frame of the ball node and the size that the SK3DNode renders at. The frame of the ball node in your case is changing due to rotations caused by the physics simulation, which explains why you are also seeing the size of the 3D scene changing.

Best regards,

Greg

Hello @Luca_65,

There is a relationship between the frame of the ball node and the size that the SK3DNode renders at. The frame of the ball node in your case is changing due to rotations caused by the physics simulation, which explains why you are also seeing the size of the 3D scene changing.

Best regards,

Greg

Hello @DTS Engineer Greg,

when the ball hit the fence and its size changes, why the 2Dball diameter isn't altered?

There is a way to avoid the frame change reflected in the sphere change?

Thank you and best regards,

Luca

SCNNode into SKScene is deformed when hit an object
 
 
Q