PythonSpr/複数関節の例 をテンプレートにして作成
開始行:
[[Python with Springhead]]
from Spr import *
import time
import datetime
import threading
INF = 3.4e+38
rad = 3.14/180.0;
hiTrackball.SetPosition(Vec3f(3, 5, 10))
fwScene.EnableRenderLimit(True)
fwScene.EnableRenderAxis(False, False, False)
fwScene.EnableRenderForce(False, False)
## -----
phScene = fwScene.GetPHScene()
phSdk = phScene.GetSdk()
phScene.SetGravity(Vec3d(0,-9.8,0))
## ----- ----- ----- ----- -----
descSolid = PHSolidDesc()
descCapsule = CDRoundConeDesc()
descCapsule.radius = Vec2f(0.2, 0.2)
descCapsule.length = 2
descSphere = CDSphereDesc()
descSphere.radius = 0.1
shapePose = Posed()
shapePose.setPos(Vec3d(1,0,0))
shapePose.setOri(Quaterniond.Rot(90*rad, "y"))
## -----
so0 = phScene.CreateSolid(descSolid)
so0.SetFramePosition(Vec3d(0,2,0))
so0.SetDynamical(False)
so1 = phScene.CreateSolid(descSolid)
so2 = phScene.CreateSolid(descSolid)
so2.AddShape(phSdk.CreateShape(CDRoundCone.GetIfInfoStat...
so2.SetShapePose(0, shapePose)
so3 = phScene.CreateSolid(descSolid)
so3.AddShape(phSdk.CreateShape(CDRoundCone.GetIfInfoStat...
so3.SetShapePose(0, shapePose)
so4 = phScene.CreateSolid(descSolid)
so4.AddShape(phSdk.CreateShape(CDRoundCone.GetIfInfoStat...
so4.SetShapePose(0, shapePose)
# Pointer
soPointer = phScene.CreateSolid(descSolid)
soPointer.SetFramePosition(Vec3d(-10,0,0))
soPointer.AddShape(phSdk.CreateShape(CDSphere.GetIfInfoS...
soPointer.SetDynamical(False)
## ----- ----- ----- ----- -----
descSlider = PHSliderJointDesc()
descSlider.poseSocket = Posed(0.707,0,0.707,0, 0,0,0)
descSlider.posePlug = Posed(0.707,0,0.707,0, 0,0,0)
descSlider.spring = 1.0
descSlider.damper = 0.01
descSlider.targetPosition = 0
# descSlider.bConstraintRollZ = False;
descLimit = PH1DJointLimitDesc()
descLimit.range = Vec2d(-3, +2)
jo0 = phScene.CreateJoint(so0, so1, PHSliderJoint.GetIfI...
jo0.CreateLimit(descLimit)
## ----- ----- ----- ----- -----
descJoint = PHHingeJointDesc()
descJoint.poseSocket = Posed(1,0,0,0, 0,0,0)
descJoint.posePlug = Posed(1,0,0,0, 2,0,0)
descJoint.spring = 10.0
descJoint.damper = 1.0
descJoint.targetPosition = (1.7*3.14/4.0)
descLimit = PH1DJointLimitDesc()
descLimit.spring = 100000.0
descLimit.damper = 10000.0
descLimit.range = Vec2d((1*3.14/4.0), (2*3.14/4.0))
jo1 = phScene.CreateJoint(so1, so2, PHHingeJoint.GetIfIn...
jo1.CreateLimit(descLimit)
## ----- ----- ----- ----- -----
descJoint = PHBallJointDesc()
descJoint.poseSocket = Posed(0.707,0,0.707,0, 0,0,0)
descJoint.posePlug = Posed(0.707,0,0.707,0, 2,0,0)
descJoint.spring = 10.0
descJoint.damper = 1.0
descJoint.targetPosition = Quaterniond.Rot(3.14/4.0,'x')
descLimit = PHBallJointSplineLimitDesc()
jo2 = phScene.CreateJoint(so2, so3, PHBallJoint.GetIfInf...
limit0 = jo2.CreateLimit(PHBallJointSplineLimit.GetIfInf...
limit0.AddNode( 90*rad, 0*rad, 10*rad, 50*rad, -85*rad...
limit0.AddNode( 87*rad, 48*rad, 10*rad, 50*rad, -85*rad...
limit0.AddNode( 65*rad, 132*rad, 10*rad, 50*rad, -85*rad...
limit0.AddNode(173*rad, 226*rad, 10*rad, 50*rad, -85*rad...
limit0.AddNode( 55*rad, 232*rad, 10*rad, 50*rad, -85*rad...
limit0.AddNode( 62*rad, 247*rad, 10*rad, 50*rad, -85*rad...
limit0.AddNode(147*rad, 291*rad, 10*rad, 50*rad, -85*rad...
limit0.AddNode( 90*rad, 360*rad, 10*rad, 50*rad, -85*rad...
## ----- ----- ----- ----- -----
descJoint = PHBallJointDesc()
descJoint.poseSocket = Posed(0.707,0,0.707,0, 0,0,0)
descJoint.posePlug = Posed(0.707,0,0.707,0, 2,0,0)
descJoint.spring = 10.0
descJoint.damper = 1.0
descJoint.targetPosition = Quaterniond.Rot(3.14/4.0,'x')
descLimit = PHBallJointConeLimitDesc()
descLimit.limitSwing = Vec2d(0, 3.14/4.0)
jo3 = phScene.CreateJoint(so3, so4, PHBallJoint.GetIfInf...
jo3.CreateLimit(PHBallJointConeLimit.GetIfInfoStatic(), ...
## ----- ----- ----- ----- -----
descSpring = PHSpringDesc()
descSpring.spring = Vec3d( 10.0, 10.0, 10.0)
descSpring.damper = Vec3d( 1.0, 1.0, 1.0)
joPointer = phScene.CreateJoint(so4, soPointer, PHSpring...
## ----- ----- ----- ----- -----
root = phScene.CreateRootNode(so0, PHRootNodeDesc())
node0 = phScene.CreateTreeNode(root, so1, PHTreeNodeDes...
node1 = phScene.CreateTreeNode(node0, so2, PHTreeNodeDes...
node2 = phScene.CreateTreeNode(node1, so3, PHTreeNodeDes...
node3 = phScene.CreateTreeNode(node2, so4, PHTreeNodeDes...
root.Enable(True)
phScene.SetContactMode(0)
st = ObjectStates().Create()
st.SaveState(phScene)
class SpaceNavigatorThread(threading.Thread):
def __init__(self, soPointer):
self.soPointer = soPointer
threading.Thread.__init__(self)
def run(self):
while True:
p = spaceNavigator.GetPose().getPos()
self.soPointer.SetFramePosition(Vec3d(p.x, p.y, p.z))
spaceNav = SpaceNavigatorThread(soPointer)
spaceNav.start()
終了行:
[[Python with Springhead]]
from Spr import *
import time
import datetime
import threading
INF = 3.4e+38
rad = 3.14/180.0;
hiTrackball.SetPosition(Vec3f(3, 5, 10))
fwScene.EnableRenderLimit(True)
fwScene.EnableRenderAxis(False, False, False)
fwScene.EnableRenderForce(False, False)
## -----
phScene = fwScene.GetPHScene()
phSdk = phScene.GetSdk()
phScene.SetGravity(Vec3d(0,-9.8,0))
## ----- ----- ----- ----- -----
descSolid = PHSolidDesc()
descCapsule = CDRoundConeDesc()
descCapsule.radius = Vec2f(0.2, 0.2)
descCapsule.length = 2
descSphere = CDSphereDesc()
descSphere.radius = 0.1
shapePose = Posed()
shapePose.setPos(Vec3d(1,0,0))
shapePose.setOri(Quaterniond.Rot(90*rad, "y"))
## -----
so0 = phScene.CreateSolid(descSolid)
so0.SetFramePosition(Vec3d(0,2,0))
so0.SetDynamical(False)
so1 = phScene.CreateSolid(descSolid)
so2 = phScene.CreateSolid(descSolid)
so2.AddShape(phSdk.CreateShape(CDRoundCone.GetIfInfoStat...
so2.SetShapePose(0, shapePose)
so3 = phScene.CreateSolid(descSolid)
so3.AddShape(phSdk.CreateShape(CDRoundCone.GetIfInfoStat...
so3.SetShapePose(0, shapePose)
so4 = phScene.CreateSolid(descSolid)
so4.AddShape(phSdk.CreateShape(CDRoundCone.GetIfInfoStat...
so4.SetShapePose(0, shapePose)
# Pointer
soPointer = phScene.CreateSolid(descSolid)
soPointer.SetFramePosition(Vec3d(-10,0,0))
soPointer.AddShape(phSdk.CreateShape(CDSphere.GetIfInfoS...
soPointer.SetDynamical(False)
## ----- ----- ----- ----- -----
descSlider = PHSliderJointDesc()
descSlider.poseSocket = Posed(0.707,0,0.707,0, 0,0,0)
descSlider.posePlug = Posed(0.707,0,0.707,0, 0,0,0)
descSlider.spring = 1.0
descSlider.damper = 0.01
descSlider.targetPosition = 0
# descSlider.bConstraintRollZ = False;
descLimit = PH1DJointLimitDesc()
descLimit.range = Vec2d(-3, +2)
jo0 = phScene.CreateJoint(so0, so1, PHSliderJoint.GetIfI...
jo0.CreateLimit(descLimit)
## ----- ----- ----- ----- -----
descJoint = PHHingeJointDesc()
descJoint.poseSocket = Posed(1,0,0,0, 0,0,0)
descJoint.posePlug = Posed(1,0,0,0, 2,0,0)
descJoint.spring = 10.0
descJoint.damper = 1.0
descJoint.targetPosition = (1.7*3.14/4.0)
descLimit = PH1DJointLimitDesc()
descLimit.spring = 100000.0
descLimit.damper = 10000.0
descLimit.range = Vec2d((1*3.14/4.0), (2*3.14/4.0))
jo1 = phScene.CreateJoint(so1, so2, PHHingeJoint.GetIfIn...
jo1.CreateLimit(descLimit)
## ----- ----- ----- ----- -----
descJoint = PHBallJointDesc()
descJoint.poseSocket = Posed(0.707,0,0.707,0, 0,0,0)
descJoint.posePlug = Posed(0.707,0,0.707,0, 2,0,0)
descJoint.spring = 10.0
descJoint.damper = 1.0
descJoint.targetPosition = Quaterniond.Rot(3.14/4.0,'x')
descLimit = PHBallJointSplineLimitDesc()
jo2 = phScene.CreateJoint(so2, so3, PHBallJoint.GetIfInf...
limit0 = jo2.CreateLimit(PHBallJointSplineLimit.GetIfInf...
limit0.AddNode( 90*rad, 0*rad, 10*rad, 50*rad, -85*rad...
limit0.AddNode( 87*rad, 48*rad, 10*rad, 50*rad, -85*rad...
limit0.AddNode( 65*rad, 132*rad, 10*rad, 50*rad, -85*rad...
limit0.AddNode(173*rad, 226*rad, 10*rad, 50*rad, -85*rad...
limit0.AddNode( 55*rad, 232*rad, 10*rad, 50*rad, -85*rad...
limit0.AddNode( 62*rad, 247*rad, 10*rad, 50*rad, -85*rad...
limit0.AddNode(147*rad, 291*rad, 10*rad, 50*rad, -85*rad...
limit0.AddNode( 90*rad, 360*rad, 10*rad, 50*rad, -85*rad...
## ----- ----- ----- ----- -----
descJoint = PHBallJointDesc()
descJoint.poseSocket = Posed(0.707,0,0.707,0, 0,0,0)
descJoint.posePlug = Posed(0.707,0,0.707,0, 2,0,0)
descJoint.spring = 10.0
descJoint.damper = 1.0
descJoint.targetPosition = Quaterniond.Rot(3.14/4.0,'x')
descLimit = PHBallJointConeLimitDesc()
descLimit.limitSwing = Vec2d(0, 3.14/4.0)
jo3 = phScene.CreateJoint(so3, so4, PHBallJoint.GetIfInf...
jo3.CreateLimit(PHBallJointConeLimit.GetIfInfoStatic(), ...
## ----- ----- ----- ----- -----
descSpring = PHSpringDesc()
descSpring.spring = Vec3d( 10.0, 10.0, 10.0)
descSpring.damper = Vec3d( 1.0, 1.0, 1.0)
joPointer = phScene.CreateJoint(so4, soPointer, PHSpring...
## ----- ----- ----- ----- -----
root = phScene.CreateRootNode(so0, PHRootNodeDesc())
node0 = phScene.CreateTreeNode(root, so1, PHTreeNodeDes...
node1 = phScene.CreateTreeNode(node0, so2, PHTreeNodeDes...
node2 = phScene.CreateTreeNode(node1, so3, PHTreeNodeDes...
node3 = phScene.CreateTreeNode(node2, so4, PHTreeNodeDes...
root.Enable(True)
phScene.SetContactMode(0)
st = ObjectStates().Create()
st.SaveState(phScene)
class SpaceNavigatorThread(threading.Thread):
def __init__(self, soPointer):
self.soPointer = soPointer
threading.Thread.__init__(self)
def run(self):
while True:
p = spaceNavigator.GetPose().getPos()
self.soPointer.SetFramePosition(Vec3d(p.x, p.y, p.z))
spaceNav = SpaceNavigatorThread(soPointer)
spaceNav.start()
ページ名:
サイト内検索
and
or
メニュー
Springhead
トップページ
スクリーンショットと紹介
ダウンロード
ドキュメント
開発者向け情報
SprBlender
SprBlender
SprBlenderの特徴
SprBlender使用例
ダウンロード
ドキュメント
Choreonoid Springhead Plugin
CnoidSprPlugin
Counter: 0, today: 0, yesterday: 0