How to get SceneKit objects to not bounce at all
up vote
0
down vote
favorite
I'm trying to make a part of my app which simulates dropping a set of books (the grey rectangles) one on top of another, on a table. Attached is a video.
However, unlike books in real life, these books bounce slightly after each one is dropped, to the point the pile of books falls over!
I've set the restitution
to zero on each book's physicsBody
, but this still happens:
private func buildBookNode(at position: SCNVector3, rotation: Measurement<UnitAngle> = Measurement(value: 0, unit: .radians)) -> SCNNode {
let book = SCNBox(width: 0.4, height: 0.1, length: 0.3, chamferRadius: 0)
let bookNode = SCNNode(geometry: book)
bookNode.physicsBody = SCNPhysicsBody(type: .dynamic, shape: nil)
bookNode.physicsBody?.isAffectedByGravity = true
bookNode.physicsBody?.friction = 2.0
bookNode.physicsBody?.mass = 0.3
bookNode.physicsBody?.restitution = 0.0
bookNode.position = position
bookNode.rotation = SCNVector4(0.0, 1.0, 0.0, rotation.converted(to: .radians).value)
return bookNode
}
What properties to I need to set to prevent the books bouncing on top of each other?
ios scenekit
add a comment |
up vote
0
down vote
favorite
I'm trying to make a part of my app which simulates dropping a set of books (the grey rectangles) one on top of another, on a table. Attached is a video.
However, unlike books in real life, these books bounce slightly after each one is dropped, to the point the pile of books falls over!
I've set the restitution
to zero on each book's physicsBody
, but this still happens:
private func buildBookNode(at position: SCNVector3, rotation: Measurement<UnitAngle> = Measurement(value: 0, unit: .radians)) -> SCNNode {
let book = SCNBox(width: 0.4, height: 0.1, length: 0.3, chamferRadius: 0)
let bookNode = SCNNode(geometry: book)
bookNode.physicsBody = SCNPhysicsBody(type: .dynamic, shape: nil)
bookNode.physicsBody?.isAffectedByGravity = true
bookNode.physicsBody?.friction = 2.0
bookNode.physicsBody?.mass = 0.3
bookNode.physicsBody?.restitution = 0.0
bookNode.position = position
bookNode.rotation = SCNVector4(0.0, 1.0, 0.0, rotation.converted(to: .radians).value)
return bookNode
}
What properties to I need to set to prevent the books bouncing on top of each other?
ios scenekit
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I'm trying to make a part of my app which simulates dropping a set of books (the grey rectangles) one on top of another, on a table. Attached is a video.
However, unlike books in real life, these books bounce slightly after each one is dropped, to the point the pile of books falls over!
I've set the restitution
to zero on each book's physicsBody
, but this still happens:
private func buildBookNode(at position: SCNVector3, rotation: Measurement<UnitAngle> = Measurement(value: 0, unit: .radians)) -> SCNNode {
let book = SCNBox(width: 0.4, height: 0.1, length: 0.3, chamferRadius: 0)
let bookNode = SCNNode(geometry: book)
bookNode.physicsBody = SCNPhysicsBody(type: .dynamic, shape: nil)
bookNode.physicsBody?.isAffectedByGravity = true
bookNode.physicsBody?.friction = 2.0
bookNode.physicsBody?.mass = 0.3
bookNode.physicsBody?.restitution = 0.0
bookNode.position = position
bookNode.rotation = SCNVector4(0.0, 1.0, 0.0, rotation.converted(to: .radians).value)
return bookNode
}
What properties to I need to set to prevent the books bouncing on top of each other?
ios scenekit
I'm trying to make a part of my app which simulates dropping a set of books (the grey rectangles) one on top of another, on a table. Attached is a video.
However, unlike books in real life, these books bounce slightly after each one is dropped, to the point the pile of books falls over!
I've set the restitution
to zero on each book's physicsBody
, but this still happens:
private func buildBookNode(at position: SCNVector3, rotation: Measurement<UnitAngle> = Measurement(value: 0, unit: .radians)) -> SCNNode {
let book = SCNBox(width: 0.4, height: 0.1, length: 0.3, chamferRadius: 0)
let bookNode = SCNNode(geometry: book)
bookNode.physicsBody = SCNPhysicsBody(type: .dynamic, shape: nil)
bookNode.physicsBody?.isAffectedByGravity = true
bookNode.physicsBody?.friction = 2.0
bookNode.physicsBody?.mass = 0.3
bookNode.physicsBody?.restitution = 0.0
bookNode.position = position
bookNode.rotation = SCNVector4(0.0, 1.0, 0.0, rotation.converted(to: .radians).value)
return bookNode
}
What properties to I need to set to prevent the books bouncing on top of each other?
ios scenekit
ios scenekit
asked Nov 9 at 10:56
Alex Curran
7,54344153
7,54344153
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
The parameter to control the bouncing is
bookNode.physicsBody?.damping = 0.9.
This may lead to slow motion of books. So a better idea is using contactDelegate to dynamic change the damping after collision.
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
The parameter to control the bouncing is
bookNode.physicsBody?.damping = 0.9.
This may lead to slow motion of books. So a better idea is using contactDelegate to dynamic change the damping after collision.
add a comment |
up vote
0
down vote
The parameter to control the bouncing is
bookNode.physicsBody?.damping = 0.9.
This may lead to slow motion of books. So a better idea is using contactDelegate to dynamic change the damping after collision.
add a comment |
up vote
0
down vote
up vote
0
down vote
The parameter to control the bouncing is
bookNode.physicsBody?.damping = 0.9.
This may lead to slow motion of books. So a better idea is using contactDelegate to dynamic change the damping after collision.
The parameter to control the bouncing is
bookNode.physicsBody?.damping = 0.9.
This may lead to slow motion of books. So a better idea is using contactDelegate to dynamic change the damping after collision.
answered Nov 9 at 15:00
E.Coms
1,4191412
1,4191412
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53224378%2fhow-to-get-scenekit-objects-to-not-bounce-at-all%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown