Open fkanehiro opened 8 years ago
一部のモデルの変換(Atlasなど)で、上と同じような空のリンクがあり、それを空のVRMLジョイントセグメントに変換するとmodel-loader側で読み込みエラーが出たので、空のリンクは変換をスキップする処理が入っています。
リンクの中にvisualかcollisionがなく、かつ子リンクもない場合、変換をスキップするというルールにしているのですが、このルールで不都合がありそうでしたら調整します。
model-loaderでどのようなエラーがでますでしょうか。以下のようなVRMLで試しましたが特にエラーは発生しませんでした。
DEF box Humanoid {
humanoidBody [
DEF WAIST Joint {
jointType "fixed"
translation 0 0 0
rotation 0 0 1 1.5708
children [
DEF BODY Segment {
mass 0.5
children [
Shape {
geometry Box {
size 0.2 0.8 0.2
}
appearance Appearance {
material Material {
diffuseColor 0.0 1.0 0.0
}
}
}
]
}
DEF CHILD Joint {
children [
DEF CHILD_S Segment {
}
]
}
]
}
]
joints [
USE WAIST,
USE CHILD
]
name "box"
segments [
USE BODY,
USE CHILD_S
]
}
今回のケースでは、形状はないが質量はあるリンクをぶら下げたいと思っています。 なので、形状も質量も子供もないリンクは消してよいと思いますが、いずれか1つでもあるものは残していただけると助かります。
上の例、ありがとうございます。
VRMLの出力が良くなかった(空出力のやり方が間違っていた)可能性が大ですね。
上の例でエラーが出ないのであれば変な条件判断する必要なく空は空のまま出せると思うので、そのように変更します。
昔(最初のバージョンの開発中)はこれでロード時にエラーが出たのだけどな、、、と思っていたのですが、今は条件判断を削除してもエラーは再現しませんでした。たぶんどこかでフォーマットが間違えていたのだと思います。
ありがとうございます。 あまり実害はないようなのですが、Jointが2つあるにも関わらず、Humanoidのjointsフィールドには1つしか出力されないようです。 それとsegmentsフィールドは空のようです。
jointに関してはfixedなどのjointIdを振ってはいけないものをjointsフィールドに入れてしまうとChoreonoidでジョイントスライダー画面にスライダーが出てこないという現象があったため、対処としてこのようにしています。 ただ空セグメント同様、試行錯誤の産物なので正しいやり方があったら直します。
segmentsフィールドも無くても動いていたのでどこかのバージョンでコメントアウトしてしまったのですが、復活させておきます。
はい、特に深刻な影響はなさそうなのでお手すきの際におねがいします。 スライダーの件はchoreonoid側を直すべきかと思います。
了解しました。
もろもろ一段落したらjointsについてはもう少し症状を狭めてまずはchoreonoidの方にissueをあげておきます。 segmentsについても後ほど復活させえておきます。
@yosuke さん、次のようなsdfを変換するとchildがいなくなってしまうのですが、なぜでしょうか?