オッサンはDesktopが好き

自作PCや機械学習、自転車のことを脈絡無く書きます

王滝SDAに持っていく筈だったモノ

 こんにちは.changです. 残念ながら,今年の大目標の一つだった王滝SDAが悪天候により中止になりました🥲 結果的には無駄になったのですが,色々考えて装備を決めたので,来年の自分のために記録しておきます.

1. サドルバッグ & 中身

 王滝の装備で先ず迷うのが,リュックを背負うかどうかです. リュックだと容量を出せますし,ハイドレーションを使った給水が可能になります. 一緒に出場する予定だった仲間もリュック派が多かったのですが,僕はリュック無しにしました. ロードでもMTBでも,トレーニングでリュックを背負う事は皆無です. ハイドレーションを使った事もありません. 赤城オフロード*1を含む長時間MTBレースも経験していて,ボトルからの吸水,背面ポケットからの補給にも慣れていました. 特に迷う事無く,大きめのサドルバッグ + ボトル2本という結論に至りました.

ドルバックと中身

 基本的には池田祐樹選手の装備*2をパクったに従ったのだけなのですが💦,以下,一応詳細です.

(1) サドルバッグ
TOPEAK AERO WEDGE PACK (STRAP MOUNT) L
新規購入しました.

(2) カッパ(下)
ワークマン Travel Shell
新規購入しました. レース中に下カッパを着る可能性はほぼ無いのですが,大会側のルールで携帯が義務付けられていたのでダミーで持ちました.

(3) 予備チューブ
Schwalbe AEROTHAN
新規購入しました.お世話になっている店長に無理を言って取り寄せて貰い,出発の前日に手元に届きました. AEROTHANは,ロードでヒルクライム用の決戦チューブ兼,携帯用の予備チューブとして使っています. バルブ周りの作りがしっかりしていて,下述のパッチとの相性も良くてパンク修理しやすい事から採用しました.

(4) パンク修理パッチ
Schwalbe GRUELESS PATCHS
2年前の富士ヒルでAEROTHANを買ったときに一緒に購入しました. 普段のライドでも携帯していますし,(出先では無いですが)実際に使った事もあります. 普通に使い易いです.

(5) 携帯工具
TOPEAK MINI PT30
新規購入しました. 元々持っていたものもあったのですが,チェーン工具付きが必要になるので買いました. ロードでは過剰な気がしますが,MTBでは標準装備です. 今後はトレーニングでも携帯しようと思います.

(6) タイヤレバー(2本)
Schwalbe
普段からメンテ&携帯用で使っています. 抜群に使い易くです.

(7) ポンプ
GE@R
正直,持っていくか迷いました. 池田選手を含め,勝負をする方達はCO2インフレーターしか持たないからです. CO2インフレーターの扱いにも慣れているし,3回以上パンクする事はほぼ無いと思いましたが,,,初参加ですし,安全をみて入れました.

(8) CO2インフレーター
元々所持していたものもあったのですが,200g×2を新たに購入しました. 16gでは容量が足りない可能性があると,店長から助言を受けたからです.

(9) チューブレスパンク修理キット
TNI DIRT
新規購入しました. 直前のトレーニングでパンクしてしまった際に,チームメートが類似製品で直してくれたのを見て感動しました. こんな便利な製品があるのですね!

(10) エイドセット
アドベンチャーレース*3で携帯したものと同じです. 中身は,バンドエイド,テーピングテープ,胃腸薬,予備のコンタクトレンズです.

(11) 予備ライト
これもアドベンチャーレースで使ったものです. 要らないのですが,大会側で携帯が義務付けられています.

(12) 手袋
パンク時等の備えで,普段から使っている使い捨てのビニル手袋を入れました.

(13) チェーンオイル
雨のレースを想定して用意しました.

(14) 予備部品(ハンガー,バルブコア,ミッシングリンク)
不思議とハンガーを携帯する方は少ない様ですが,,,個人的にはチェーン工具よりも必須だと思います. (一緒に走っていた仲間を含めた)自身の経験上,転んでハンガーを曲げる事はあってもチェーンが切れることはほぼありません.

(15) ウェス
下述のタイヤブートを貼るときにシーラントを拭き取る必要があると考え,入れました

(16) タイヤブート
ParkTool TB2
新規購入しました. これも存在を知りませんでした. 多くの選手が持っているのを見て購入しました.

上記を全て詰めて,1054gでした

2. ウェア

 基本的にはチームジャージで決まりですが,レインウェアだけ少し迷いました.

 既に書いた様に王滝SDAではレインウェアの上下の携帯が義務付けられます. 大会直前に運営からメールが来て,念押しされました. 過去に事故があったのかもですね.

 上はロードで実績のあるSportfulのベスト一択でした. 下は正直要らないのですが,,,ワークマンでダミーを買ってサドルバッグの一番奥に詰める事にしました.

 雨天時にベロトーゼを付けるという情報もあったのですが,持っていきませんでした. 元々好きでは無いですし,去年の沖縄で邪魔になった経験もあります. つま先を地面に着いただけで破れてしまうので,MTBでは間違いなく破けてゴミになると思います.

去年の沖縄.これと色違いのSportfulを持つつもりでした.ベロトーゼはこの時に邪魔だった経験から持ちませんでした

3. 補給

 ロードで使っているエネ餅とジェルです.

補給食.白い粉wwはCCDです

 ジェル2個をボトルに溶かすつもりでした. レース展開や体調によっては固形を食べられない事があるので,いつもジェルを多めに持ちます. 全てジャージのポケットに入れるつもりでした.

 ボトルはEliteの950 mlボトルを2本積むつもりでした. これも沖縄と同じです.

CCD.珍しく神経質になってww,950mlぶんを測って持ちました

4. その他

トップチューブに主要ポイントのメモと,断面図マップを貼りました

 トップチューブにチェックポイントと,登り始め&終わりのメモを貼りました. 断面図マップはお世話になっている店長が作ってくれました.

5. むすび

 王滝は来年に持ち越しです. 1年後の自身の事はわかりませんが,宿泊施設等には"来年利用するから..."と言ってキャンセル料を免除して頂いた様です🙇🏻🙇🏻 前々向きに出場を検討するつもりです.

 年内は沖縄に集中します.

大滝SDA 2024 参加メモ

1. エントリー情報

ゼッケン番号: 118

2. コース

公式 http://www.powersports.co.jp/sda/24_otaki_bike_9/map.pdf

Ride with GPS https://ridewithgps.com/routes/48458582

ポイント
6 km: パレード終了
23 km: MT1
28 km: Brg.
30 km: Tunnel
37 km: Dam
41 km: CP1→MT2
71 km: CO2→MT3
78 km: Brg.
82 km: CP3(舗装路の終わり)
90 km: MT4

3. レース動画

非オフィシャルのコースガイド*1

篠さん*2

全コース観られる*3

4. タイムスケジュール

22日(日)
4:30 整列開始
6:00 レース開始

5. 持ち物

機材

・バイク
・シューズ
・ヘルメット
アイウェア(KABUTO,ノーマルとクリア両方持っていく)
Garminウォッチ
心拍計
・ライト(通勤で使っているCATEYE)
・ゼッケン関係(両面テープ、ハサミ、安全ピン,要らないかも)
・ポンプ(CYCPLUS)
・空気圧計
・ラジペン

・サドルバッグ
・レインウェア下(ワークマンでダミーを買っておく)
・スペアチューブ(Schwalbe AEROTHAN,注文中,間に合わなかったらブチル)
・パッチキット(Schwalbe)
・工具(Topeak MINI PT30)
・タイヤレバー
・ポンプ(GE@R,誰も持って行ってない)
・CO2インフレーター×2
・タイヤブート(注文中)
・エイドキット(カットバン,テーピングテープ,胃腸薬)
・予備ライト(アドベンチャーレースで使ったヘッドライト)
・ビニル手袋
・チェーンオイル
ミッシングリンク
ディレイラーハンガー(予備)
・バルブコア予備
・ウェス

ウェア

・夏ジャージ(旧チームジャージ)
・アームカバー
・レッグカバー
・インナー
・グローブ
・靴下
・バンダナ
・レインウェア(sportfulのジレと長袖)
・日焼け止め(クレンジングオイルも)
・ワセリン
・レインオイル

補給食

・ボトル(750×2,両方ともCCDで一本はジェルを2本溶かす)
・補給食(エネ餅×4,ジェル×6)

生活用品

・23日着替え(Tシャツ、インナー、ボトムス、パンツ,靴下,ハンカチ)
・タオル(着替え用)
・日よけパーカー
・化粧品(美容液、洗顔フォーム)
・寝間着(Tシャツ、スパッツ,ショーパン)
・歯ブラシ
・タオル

その他

・緩衝材毛布
・ウェス
・ホイールバッグ
・防水スプレー
・タオル(汚れていいやつ)
・スマフォ
・財布
・充電器(USB-C,mini USB,iPhone)
・モバイルバッテリー
・イヤホン
コンタクトレンズ
・眼鏡(ケース)
・眼鏡クリーナー
・鼻テープ
・爪切り
・ウェットティッシュ
Garminウォッチ画面設定
・マスク
・免許証
ETCカード
・現金
Mac
・サンダル
・筆記用具

6. その他

公式ルール*4

赤城オフロード3h,3位

 こんにちは.changです.

 今年も赤城オフロードの3時間耐久を走りました. 結果は3位. シーズンインから波に乗れなかった中,結果を出せてホッとしています😀

ゴールシーン.写真はチームメートが撮ってくれました.格好付けてジャージのジッパを直したのに,下向いてますね草

1. 赤城オフロード

 WALKRIDEが主催するMTB耐久レースです*1, 所属チームのオフロードメンバーが好きなイベントで,僕も今年で(多分)4回目の出走になりました.

 群馬県の山奥にある赤城林間学園が会場です. 今年はBBQの道具を持ち込まずに施設から借りたんですが,安価で借りられたとメンバーが喜んでいました. 普段は部活の合宿とかに使われる様で,大きな体育館やサッカーコートもあります.

 今年は1時間ソロレースという新しいクラスが追加され,赤城オフロード1+3時間耐久レースと微妙に名前が変わりました. 一緒に出場したクラブメンバーはシクロクロスをやっている事もあり,皆んな1時間へのエントリーでした. 3時間に出たのは僕だけで,おまけにメンバーの車に便乗させて貰っていたので,”待っていてもらって申し訳ない”とも思ったのですが,,,”BBQをする時間がたっぷりあって良し”と皆さんおっしゃって下さいました🙏

 去年,同じレースで3位になっています*2. 赤城はドロップオフ等の難易度が低く,ほぼほぼフィジカルだけの勝負になります. 長めの登りもある事から,僕に向いているコースです. 今年は富士ヒルに出ない所為でシーズン序盤の目標が乏しいところもあったので,真面目に勝ちを狙っていました.

2. レース展開

 今年はソロ3時間への出場者が40名を超えるという特殊な雰囲気でした. 例年,3時間はチームでの出場が多くて,スタートの並び等はまったりしているのです.

 事前に公開されたスタートリストから,去年2位になっている選手と,3月に走った2戦で全く付いていけなかった競合選手を確認していました. この2名に付いていけるかの勝負だと,出走前から分かっていました.

 レース開始後,例年の様にスタートダッシュが掛かります. ただ,去年までの展開とは少し違っていました. 去年まではチームで出場している選手(交代を前提に走るので無理が効く)が多かった為に10名位のパックでカッ飛んで行く感じだったんですが,今年は1週目からバラバラになりました. 3列目からのスタートだったので序盤は周りの様子を見ようと思ってたんですが,先行した数名以外はペースを上げない感じだったので早々に抜いて前に出ました.

 マークしていた2名のうちの1名は最前列からスタートして,案の上かっ飛んで行きました. 1週目の中盤までは見えていて,無理すれば追いつけそうな感じだったんですが,ジワジワと離されていきました. もう1名(最終的な勝者)は初め僕の後ろにいて1周目の後半か2週目かで抜いて行きました. これに付いて行ければ良かったんですが,大変力強い走りで粘れませんでした.

 その後,暫く5〜6番手を走っていました. マークしていた2名以外の数名は視界に捕らえていました. この方達も強かったですが,僕は後半勝負に自信があります. この時点で互角程度に走れている選手に敗れる事はほぼありません. ”3位は堅い”事は判っていて,後半でどれだけ前の2名に迫れるかの闘いでした.

 1.5時間程走ったところで単独3番手になります. ここからはずっと1人でした. チームメンバーや沿道の応援(?)から,タイム差が2分半程である事がわかっていました. 追いつくのは辛いな…と思いつつも,必死で粘ります.

 レース終盤にかけて,徐々にタイム差が減りました. 流石の強豪2名にも疲れが出たのでしょう. 最終的には1分半程の遅れでゴールしました.

3. 自分は強くなれているのか?

 今期,なかなか結果を出せずにいました. 記事にしませんでしたが,3月に茨城の常陸の国と,千葉の野田でMTB耐久を走っています. 常陸が2ラップ遅れの7位,野田が2ラップ遅れの12位で,表彰台の遠さを痛感しました. ロードで出場した群馬の2戦も完走出来ませんでした*3

 思う様に結果が出ないと,”自分は強くなれているのか”と不安になります. トレーニング方法が間違っているのかとか,年齢的な事とか,要らん事ばかりを考えます. 今季はランをやっていて*4バイクの練習量は去年よりも減っています. ”やっぱり自転車から離れちゃダメなのかなぁ”とか,,,

 正直,例年と比べて結果が悪い訳ではありません. 実力的にはこんなものです. ただ,自身の成長に期待したい気持ちも強くてですね… 今年は大滝を狙っている事もあり,常陸と野田の結果はそこそこショックだったのです.

 今回の赤城で結果が出た事は素直に嬉しいですし,ホットしています. 解っていたつもりだったんですが,長時間のフィジカル勝負であれば戦えるんです. 常陸と野田は非常に難易度が高いコースで,テクニックの差が大きく出ました. フルサスのメリットもかなり在ったと思います. この辺は仕方ない部分もありますが,大滝までに出来る限りの準備をしようと思います. フォレストバイクと富士テンに通うかなぁ…

 順位は去年と同じだったんですが,上位2名との差は減ったと思います. 去年はギリギリラップされずに8分差?みたいな感じだったので,少しはレースに参加出来たのではないかと思います. 追いかけていた2名は結局最後まで視界に捉えられなかったんですけどね💦

 前の2名はずっと競っていて,最後はスプリント勝負だったそうです. 楽しそうというか,憧れますね😍. 僕もそういうレースをしたいなぁ… ただ,本当に勝ちを狙うならばスプリントにしちゃダメなんです. 僕の脚質では,レースの中盤から終盤に単独で抜け出して逃げ切るしか勝つ術がありません. ハードルは高いですが,トレーニングを積んで来年もトライしようと思います!

4. まとめ

 一緒に出場したメンバーも表彰台に上がれて,とても良い一日になりました😀. 残念ながら怪我を負ったメンバーもいらしゃったのですが,大滝で元気な姿を見せてくれると信じています.

 レース後の月曜からずっと体調が悪くてトレーニング出来なかったんですが,明日からボチボチ乗り始めようと思います. 明日も☔️なのかな?

 次は川崎マリンエンデューロの4hを走ります.

インプレ:MERIDA REACTO

 こんにちは.changです.

 今回は,半年間乗ったMERIDA REACTOのインプレを書きます.

MERIDA REACTO.写真はラストライドにて

1. REACTO & SCULTURA

 REACTOはMERIDAが製造・販売するエアロロードです. 国内外の主要レースで輝かしい成績を上げています.

 UCIワールドチームのBAHRAIN VICTORIOUSは,前身となるLampreの時代からMERIDAのバイクを使用しています. 数多の勝利を上げている中でも個人的に印象的なのが,2021年のSonny Colbrelli氏によるRaris Roubixの勝利と,2022年のMatej Mohoric選手によるMilano Sanremoの勝利です. いずれも,僕が乗っていたのと同じ第4世代のREACTOが使用されました.

 近年,MERIDAは計量モデルのSCULTURAの最新型をオールランドモデルとして推している様です. 実際,クライマーのMikel Landa選手(2024年にQUICKSTEPに移籍)や,我らが新城幸也選手はSCULTURAを好んでいる様です. しかし,Matej Mohoric選手やDamiano Caruso選手の様に,REACTOを使い続けている総合系選手も沢山います. REACTO(現行第4世代は2021年にリリース)は,スプリンター向けの特化型バイクでも無ければ,型落ちの旧モデルでも無いという事です.

 確かに,REACTOはSCULTURAと比較すると車重があります. そこが,ヒルクライムが盛んな日本のアマチュア界での評価が必ずしも高くない理由かと推測します. しかし,REACTOは決して登れないバイクではありません. 実際,前述のDamino Caruso選手は総合系のクライマーですよね. 近年,プロ・アマを含めてロードレースが高速化しています. それに対応するハイスピード・オールラウンドバイクがREACTOなのです.

2. 選定理由

 直接的な原因は,事故でFOCUS Izalco max discを失った*1事でした. シーズン中の事故で,レースに早く復帰したかった為,あれこれと検討する時間がありませんでした. そこで,以前の試乗で直ぐにレースで使える事が分かっていたREACTOを選びました.

 試乗をしたのは2023年の春です. ショップに縁のある営業さんが試乗会を開いて下さって,登り下りを含めてがっつりと試乗出来ました.

お世話になっているショップで試乗会があり,REACTOとSCULTURAを試していました

 乗った時に先ず感じたのは,曲がり易さと下り易さです. フォークの剛性に依るものだと思います. Izalco maxのフォークが柔らかめであった所為もあり,顕著にその差を感じました.

 また,そこそこ車重があるフレームなのですが,登れないという印象は持ちませんでした. ダンシングの感触が良かったからです. REACTOのダンシングに関しては宇都宮ブリッツェン時代の小野寺選手が絶賛しています*2. 勿論,乗鞍の様に長くてキツい峠に向いているかと言えば,そうではありません. ここは自身の事情として,"昨年の富士ヒルをもってヒルクライムを卒業 & ロードレースに専念"する事を決めていた*3という事が大きいです.

 試乗会では最新SCULTURAも試していました. ロードレースに専念するとは言っても,僕の脚質はクライマーです. 軽量で,最新モデルであるSCULTURAを選ぶのが順当だったと思います. そこを敢えてREACTOを選んだのは,試乗の印象がREACTOの方がSCULTURAよりも圧倒的に良かったからです. REACTOと言うとパワーライダー向けで乗り心地が硬いイメージがありますが,実際にはSCULTURAの方がずっと硬くてシャキシャキしています. シッティングではバイクを左右に揺らしたくなる感じですし,ダンシングでは(僕のやり方だと)若干すっぽ抜ける印象がありました.

注:
僕の主観もあるのかも知れません. 営業の方からはSCULTURAの方が硬いと言うお話だったんですが,新城選手がREACTOの方が硬いという発言をされていたのもどこかで聞いた事があります. もしかしたら,プロレベルでは違う印象になるのかも知れません.

 また,これも僕の事情になってしまいますが,事故で失ったFOCUS Izalco max discに乗り心地が似ていたというのも選定のポイントでした. 正直に申し上げると,はじめは失ったのと同じIzalco maxを買おうとしました. シーズン中にバイクを替えたく無かったからです. 残念ながらフレームセットでは在庫が無くて買えなかったのです. その辺の事情や制約もあった中で,最善だったのがREACTOでした.

3. 特徴

(1) 良かったところ

速さと快適性

 間違いなく,僕が今まで乗ったバイクの中で最速のバイクです. 実際,REACTOを使用した昨シーズンの後半は,怪我による離脱があったにも関わらず,過去最高の成績でした. 下総クリテリウム4位*4修善寺CSC 5時間耐久 優勝,ツールド沖縄市民200 43位*5...等. また,Paris Roubixを勝っている事で証明されている様に,快適性も高いです. 高成績を出せたレースは全て長時間のレースだったのですが,振動吸収性が高く,身体へのダメージが抑えられたからだと思います.

下り最強

 下りがド下手糞な僕が言っても説得力に欠けますが,,,下りの安定感は群を抜いていると思います. フォークの存在感が凄くて,他社と比較しても圧倒的に太いです. Matej MohoricのMilano Sanremoの勝利ではドロッパーシートポストばかりがフィーチャーされます*6が,バイクのダウンヒル性能にも間違いなく支えられていたと思います.

(2) 気に入らなかったところ

メンテナンス性に難

 プロ仕様のレーシングバイクなので仕方が無い部分もあるんですが,メンテナンス性は高くないです. 難儀だったのがサドル調整とブレーキ調整でした.

 昨年,若干サドル沼だった事もあって頻繁にサドルを交換していたのですが,,,サドルの高さや前後位置を変えるのが恐ろしく面倒でした. ネジ部に衝撃を加えたり,やぐらを全バラシする必要がある為,出先では出来ません.

 また,僕はレース時には決戦用ホイールに履き替える事が多いのですが,その際に必要となるブレーキ調整もし難いです. ディスククーラーという部品がフレームとブレーキキャリパーの間に挟まる構造になっているのですが,これがある所為で,スムースにブレーキを固定できません. ネジを締めた時にキャリパーが動いてしまうんです. ディスククーラーを外してしまう事も出来るんですが(UCIレースでは違反になった前例あり),ディスククーラーと同じ寸法のスペーサが必要になってしまうので事情は変わりません.

ディスククーラー.ディスクローターを冷やす効果はさておきなんですが,,,ブレーキ調整の妨げになる問題児でした

 サドル位置を滅多に変えなくて,ホイール交換をされない方には全く問題になりません.

ハンドルが限られる

 フレームセットにステムが付属しません. FSAの一体型ハンドルか,ケーブル内装ステムを別途購入して使う事が前提になっています. (ハンドル落差を出すために)僕は無理やり汎用ステムで組んだのですが,ショップの店員さんにはかなり無理を言いました. FSA以外はメーカー仕様外なので,使う場合には自己責任で...という事になります.

汎用ステムでの運用.ケーブルが露出するのは気にしないんですが,ヘッドに水が入り易いと言った不自由もあります

小柄にやさしくない

 一番小さいXXSサイズに乗っていたのですが,少しリーチが大きめでした. 因みに僕は身長168cmと小柄ですが,身長に対して腕が短い方ではありません. 小柄の方や,女性の方には少し扱い難いかも知れません. これが一番大きいかったかなぁ🤔

4. 手放した理由

 事実だけを言えばIzalco maxの新型を買った*7から手放したのですが,,,色々考えました. 正直,REACTOの方が向いているレースは間違いなく多いです. レースの成績を追求するなら,REACTOを所有し続けて使い分けるのも選択肢でした. それをしなかった理由は大きく2つあります.

(1) 置き場所

 先ず単純に,1Kマンションの自室にこれ以上自転車を増やすことが出来ませんでした. 僕は元々ロードバイク2台とMTB 1台を所有しています. ロードバイクの1台はローラー用のリム車なので,これを捨ててREACTOと入れ替える事も考えたんですが,,,ハイエンドのディスク車をローラーで使って汗ギトにするのを躊躇いました. また,部屋が狭くて自転車をスマートトレーナに乗せっぱなしに出来ないので,設置が面倒なスルーアクスル仕様は煩わしいです.

(2) コンポーネントの互換性

 REACTOは事故から生き残ったDuraAce 9100で組んでいたのですが,新しく購入したIzalco maxのDuraAce 9200とは互換がありません. 故障時等の部品の移し替え等は,基本的には出来ない状態になります (ブレーキローターとクランクだけ可能). コンポの総入れ替えは可能ですが,,,それが必要になる様な大落車を想定して競技をしたくありません.

5. まとめ

 残念ながら手放した後でのインプレとなってしまいましたが,本当に素晴らしいバイクでした. ショップに下取りして貰ったので,良いオーナーに巡り合って欲しいです🙏🙏🙏

 今回の事で良く解ったんですが,プロのレースに特化したバイクがアマチュア&サラリーマンライダーに向いている筈がありません. 面倒事を我慢してでも速いバイクに乗りたいか,ストレスを避けて自分に寄せたバイクに乗りたいかは,人それぞれだと思います. 無精かつ捻くれ者の僕は後者を選んだという事です.

JBCF 東日本ロードクラシック & JCF 北関東チャレンジサイクルロードレース,DNF

 こんにちは.changです.

 群馬CSCで行われたJBCF 東日本クラシックと,JCF 北関東チャレンジレースに出走しました. 結果はどちらもにDNF. ここから上げていきます!

今シーズンからチームジャージがワンピースになりました.ゼッケンを付けるのが大変ですwww

1. JBCF 東日本ロードクラシック

 土曜日に行われたDay 1のE2/E3混走を走りました. Day 2は出走時間が午後だった関係でエントリーしませんでした.

 正直この日は日和っていて,気持ちがレースに入っていませんでした. シーズン初戦,バイクは2週間前に納車されたばかり,E2/E3混走で人数が多い,,,と不安要素のてんこ盛りだった為です. "完走できれば大成功"という気持ちでした.

 下り易い順回り(時計回り)で,JBCFレースにしては長めの11周回(66km)だったため,条件は自分に合っていました. また,群馬にしては珍しくドライでした. いつも雨に降られので😓...完全ドライは初めてだったんぢゃないかな?

 120名弱の出走で,集団の中ほどからスタートしました. いつも通りレース開始直後からハイペースで,集団が一列棒状になります. 何とか食らいつきますが,先頭がはるか前方に見える状態でキツかったです. コーナーの度に脚を削られます. 集団の前方に上がる動きをするべきだったんですが,この日は敢えて無理をしませんでした.

 5週目でドロップして,8週を走り切ったところで足切りになりました. リザルトを見ると,完走が47名で,DNFした中では4番目でした. 完走目的で走った訳ではありませんが,今思えば"もう少し粘れればな"という感じです.

 結果は残念ですが,今期の初戦を無事に終えられた事は良かったです. 何より,"レースに出よう!"というモチベーションがシーズン頭から沸いてきたのがポジティブです. 昨シーズン末,ポイントが足りずにE2 → E3に降格になった為,今シーズンはイチから出直しになります. 先ずはE2への昇格を狙って頑張っていきます🔥 後述する様に狙えるレースがあまり無いのですが...

 ニューマシンを試せた事も良かったです. 2週間前に納車されたばかりで数回しか乗れて無かったのですが,違和感は全くありませんでした. このバイクでシーズンを戦っていくイメージを持てました.

2. JCF 北関東チャレンジサイクルレース

 上記JBCF 東日本ロードの一週間後に,同じ群馬で開催されました. 時計回りの15週回でこちらも好きな条件でした. 奇跡的にと言うと変ですがwww,この日も天気が良かったです.

 同日にJBCF 西日本ロードクラシックが行われていた所為で,競合選手は少なかったです. エリートとU23の混走だったのですが,エリートの出走は10名もいませんでした. 学生の練習会に混ざった様な感じです.

 前週の反省から,この日は積極的に前で走ろうと思っていました. 学生を含めて40名程度の出走だったので前週のような怖さが少なく,集団内での位置取りがし易かったです. アタックに反応したり,ローテーションに加わったりしながら,集団前方でレースを展開しました.

 序盤に6名程の逃げが出来ます. 競合選手が含まれていた様で,タイム差がどんどん開いていきます. 集団の側は協調してペースアップする雰囲気がありません. 人数を揃えている大学は,逃げにメンバーを入れている所為なのかペースを上げる感じではなかったです. J ProTour配下の選手などから単発のアタックは出るのですが,人数を掛けて追い掛ける様な動きが起きません. 平均速度は上がっていなかったと思います.

 逃げメンバーは全員(順位に関係ない)学生だった為に追う必要は必ずしも無かったのですが,集団のペースを上げて前に追い付きたいという心理になりました. 多めに前を引いたりしてペースアップを図ったのですが,結果的には脚を浪費するだけの動きになってしまいました. 心臓破りの終わりで付き切れなったのをきっかけに,ズルズルとドロップしました. 8週目に入るところから単独になって,11週を走り切ったところで足きりになりました.

 もっとコンサバに走っていれば完走出来たし,エリートの人数が少なかったので上位に食い込むチャンスもあったかも知れません. DNFは残念ですが,積極的にレースに参加出来た事は良かったです. 次につながるレースが出来たと切り替えて,またトレーニングをしていきます.

3. 2024年度レーススケジュール

 既に終わってしまっているレースもありますが,エントリーを検討しているレースです.

2.10 中井シクロクロス
3.24 MTBクロスカントリー野田
4.14 JCF修善寺
4.20, 21 JBCF群馬
4.27 JCF群馬
5.12 JBCF大磯クリテ
5.26 赤城オフロード
6.16 川崎マリンエンデューロ
9.22 SDA大滝
9.28, 29 JBCF群馬
10.27 JBCF石川
11.?? ツール・ド・沖縄

 メインの目標は9月の大滝と11月の沖縄です. 富士ヒルが無いのでシーズン序盤の山を作り難い感じです. 赤城の優勝を狙って調子を上げていこうと思っています.

 今回の2レースで感覚を戻せたのでどんどんロードレースに出たかったのですが,暫く間が空いちゃいます. 大磯クリテリウムが苦手なので,ロードの次戦は川崎マリンになりそうです.

 JBCFで出られるレースがほぼ群馬しかのが悔やまれます. 魚沼が大滝と被る & 石川が沖縄の直前になってしまった為です. 石川は今年で終わりだとか... JBCFはもういいかなぁ...🤔

4. おわりに

 何にせよ,ロードシーズン開幕です. 今シーズンも怪我無く,シースを楽しんでいきたいです.

 最後に,,,いつもの事なんですが,両日とも下りに苦しみました. 元々の不得手に加えて,この冬は"どうせバイクが変わってしまうから"とロードに殆ど乗って無かったのです. 言い訳をしていても仕方がないので,具体的な改善アクションを取ります. 平日の朝練は一定時間を下りだけに集中して,同じ峠を反復して攻める練習をしようと思っています.

おまけ: JCF チャレンジサイクルロードレース

 余談なんですが,レーススケジュールにも書いた様に,JBCF群馬の前週に修善寺に開催されたチャレンジロードレースに出るつもりでした. エントリーもしていたのですが,仲間達と一緒にマスタークラスにエントリーしていた所為で少しだけ揉めてしまいました. JCFの職員の方から"マスタークラスに出るなら登録をマスターズに替え,年間を通じてマスターで活動しなければならない"という連絡を受けました. 仲間(JBCF未登録)は同じ連絡を受けてマスターに登録を替えたのですが,僕は躊躇しました. JBCFは間違いなくエリートで登録しているので,大元となるJCF登録をマスターに変えたら問題になりそうだったからです. 職員の方に訊いたら"JBCFの事は知らない"と言われました. 別団体なので仕方が無いのですが,もう少し仲良くしてくれても...

 結局登録を替えずに修善寺には出走しなかったんですが,,,どうやらJCF→マスター,JBCF→エリートでOKっぽいです. 有名選手もそうしてるし... 情報を集めて,来年はもう少し巧く活動したいと思います. (JBCFを辞める事も視野に)

新車:Izalco max disc買いました(2024年版)

 こんにちは.changです. 私事ですが,新車を買いました. FOCUSのIZALCO MAX DISC 9です. 丁度3年前にも同じタイトルの記事を書いているのですが,今回は2024年版です.

1. FOCUSバイク

 FOUCSはドイツの自転車メーカーです. もの凄く有名という訳では無いですが,かつてはUCI Pro TourのAg2rに機材供給していました. 2016年のツール・ド・フランスでRomain Bardet選手が大活躍した時に乗っていたバイクとして印象的です. 数年前にはJ PROTOURのMATRIX POWERTAGも使用していました. 近年では意図的にプロチームへの供給を止めている*1様ですが,こだわり抜かれたフレーム品質は健在です.

 僕にとっては3台目のFOCUSバイクになります. 何かしらの縁があるのでしょう. せっかくですので,僕がこれまでに乗ったFOCUSバイクを紹介します.

IZALCO MAX.写真は2019年のあざみアタック時

 初めて買ったハイエンドフレームでした. 2016年か2017年に買ったと思います. チームに加入するきっかけになったバイクでもあり,大袈裟ではなく,こいつに人生を変えられましたwww. 今はローラー用になっていますが,クラシカルなジオメトリと派手な赤色が最高に気にいっています❤️

IZALCO MAX DISC.写真は2022年のツール・ド・沖縄 市民210走破後

 2020年の秋頃に購入しました*2. レースで戦う為に一切の妥協を捨て(=金額を気にするのを止めて),DURA ACEコンポとRovalホイールで組みました. このバイクも良かったです. 速くて,乗りやすくて,他には無い独特のカラーリングが胸キュンで… 残念ながら昨年の交通事故で失ってしまいました*3

IZALCO MAX DISC 9.写真はチーム練での初乗りにて

 同じモデル名なんですが,上記IZALCO MAXから完全アップデートされた最新フレームになります.

2. 購入理由

 2年程前から発売の噂を聞いていて,ずっと狙っていました. 昨年落車をしてしまった時にこのモデルがリリースされていれば,間違いなく第1選定候補でした. 残念ながら当時は未発売だったのです. 転んだ直後は直ぐにレースに戻れるか判らなかった事もあり,早々にシーズンを終えてFOCUSニューモデルのリリースを待つ事も考えました. 結果的には直ぐにレース復帰すると決めた為,購入可能な選択肢の中でベストだったMERIDA REACTを買いました.

 MERIDA REACTをとても気に入っています. 間違いなく,これまでに僕が乗ったバイクの中で最速です. 実際,怪我からの復帰後にも関わらず,MERIDA REACTで走った昨年のシーズン後半は全体的に好成績でした. 下総クリテリウム4位*4修善寺CSC 5時間耐久 優勝,ツールド沖縄市民200 43位*5 etc.. いつも押しが強いwwショップの社長からも,「REACT凄く良い.買い替えるのは勿体無い」と言われていていました. 少なくとも今シーズン位は乗るだろうと思ってたんです.

 そんな折,自分の中では1年遅れでFOCUSニューモデルがリリースされました. 普通に気になるバイクだったので試乗しました. 2回乗ったのかな? そのうちの1回は,お世話になっているショップの他店でかなりガッツリと試せました. これで掴まれてしまったんですね.

1月にYOU CAN武蔵村山店で試乗しました.2h位借りてしまったんですがまんまと...www

 正直,最速バイクではないかも知れません. 重さも,各トップメーカーが軒並み7 kgを切るオールラウンドロードを発表しているのと比べれば見劣りします. FOCUSは,競技者としては必ずしも最善の選択では無いのかも知れません.

 ただね,,,FOCUSのバイクは,兎に角,乗ってて楽しいんです. 僕は一応ガチ目にレースをやっているんですが,それでもレースで自転車に乗るのは多くて月に2回です. これに対してトレーニングは週4〜5です. レースの10倍程の時間を,トレーニングで自転車に乗っている事になります. 甘い事を言ってしまいますが,正直,トレーニングが楽しくないとやってられないのです. 他社モデルに乗ってみて改めて気付かされたところがあるのですが,IZALCO MAXは毎日でも乗りたくなる数少ないレーシングバイクです.

3. 特徴

 一昨日納車されたばかりなので,細かいところまでは分かりません. 試乗で掴んだ範囲の感想になります.

良いところ

 前作で物足りなかった点が完璧に改善されたところです.

 前作のIZALCO MAX DISCで1番のマイナスポイントが,下りコーナーを攻め難い点でした. フォークが柔らかくて安定性に難があり,また,BBが低くてペダルヒットし易かったんです. ”後輪ブレーキローターに140 mmを使えない”という点があちこちで指摘されてましたが,そんな事は正直どうでも良かったです. ニューモデルでは,フォークの重量が増している*6事からも明らかな様に,前側の剛性が格段に増しています. BBも高くなっていて,別次元で曲がれる様になりました.

 剛性が高くなったぶん優しさは減っているのだと思いますが,どうなのでしょう? 旧モデルと乗り比べれば解るとは思いますが… 後から伸びてくる(悪く言えば反応が遅い)しなやかさは健在です. ダンシングも変わらず気持ち良いです. 

悪いところ

 色が地味ですねwww. 海外HPでは6カラーあるのですが,日本には黒と青の2カラーしか入って来ないそうです. ダウンチューブにロゴがないというのも,好き嫌いが分かれるポイントでしょう.  

4. 機材構成

 ジャパンアセンブリのDura Ace完成車を買って,ホイール,ハンドル,サドルを移植しました. ハンドル落差を出したい事から,汎用ステムを使っています.

・Frameset: FOCUS IZALCO MAX DISC, XSサイズ
・Front/Rear brake: Shimano Dura Ace 9200
・Rotors: Shimano Dura Ace
・Brake/shift levers: Shimano Dura-Ace 9200 Di2
・Front/Rear derailleur: Shimano Dura-Ace 9200 Di2
・Chainring: Shimano Dura-Ace 9200 52-36
・Cassette: Shimano Dura-Ace 9200 11-30
・Chain: Shimano Dura-Ace 12 speed
・Crankset: Shimano Dura-Ace 9200, 170 mm
・Power meter: Shimano
・Bottom bracket: CERAMICSPEED
・Wheelset: ROVAL Rapide CLX
・Tyres: Pirelli P-ZERO RACE, 28mm
・Tubes: Vittoria Latex
・Handlebars: Easton EC90 ALX, 38 cm
・Handlebar tape: iTM
・Stem: RITCHEY WCS, 120mm & - 17deg
・Computer mount: レックマウント
・Pedals: Shimano Dura Ace
・Saddle: Selle San Marco Shortfit
・Seat post: FOCUS (専用品)
・Bottle cages: ???(REACTの付属品)
・Computer: Garmin Edge 540 Solar
・Bike weight: ???

Note:
 Rotorのカーボンクランクで165 mm化しようとしていたのですが,パワーメーターがフレームと干渉して使えない事がわかりました. 試したのはRotor純正のINSPIDERです. お店には負担をかけてしまいました 🙇🏻 他社の互換品(Power2max等)であれば使える知れませんが,試していません. 暫定的に以前から使っていたDura Aceの170 mmを付けています. Shimanoで165 mmを買い足すかも知れません.

5. MERIDA REACT

 結果として,昨年の夏に買ったばかりのMERIDA REACTを手放すという判断をしました. 色々と考えて決めた事ですが,これについては別記事で書きます.

6. まとめ

 今シーズンが楽しみになってきました. 特にこの冬はロードに対するモチベーションが下がり気味だったんですが,,,良い刺激になって欲しいです😀

Blenderで描いたモデルをUnityで物理演算するときの慣性モーメントの話

 こんにちは.changです.

 物凄くニッチな内容ですが,Blenderで作ったモデルをUnityに移植して物理演算する際の慣性モーメントの与え方について解説します. この情報を必要とする方は世の中に殆どいらっしゃらないと思いますが,,,

1. 慣性モーメントとは?

 一言で言うと,回転運動版の質量です. 運動方程式

 ma = F

だと言うのは,高校物理で教わりますね. 細かい事を言うと,これは並進の運動の方程式です.  mは質量を, aは加速度を, Fは外力をそれぞれ表しています. 因みに,加速度 aは位置の二階微分であり, \ddot xとも書けます.

 ここで,運動方程式を回転版で表すと,

 I \ddot \theta = T

になります. Iは慣性モーメント, \ddot \thetaは角加速度, Tはトルクを表します. 並進の運動方程式と比較すると, m I a (= \ddot x) →  \ddot \theta F Tにそれぞれ対応しています. 並進運動を解く際に物体の質量(わかりやすく言うと,重さ)が重要になるのは,何となく理解出来ます. それと同様に,回転の運動を正確に解く際には慣性モーメントが不可欠なのです.

 慣性モーメントの計算方法の詳細は省略します. 話を簡単にする為に物体内の密度を一様と仮定すると,慣性モーメントは物体の形状のみで決まります. 例えば直方体*1ならば:

直方体.重心を原点,x方向の長さをb,y方向の長さをb,z方向の長さをlとしています


I_{x} = \frac{1}{12} m (a^2 + l^2)

I_{y} = \frac{1}{12} m (b^2 + l^2)

I_{z} = \frac{1}{12} m (a^2 + b^2)

円柱ならば*2:

円柱.重心を原点,z軸を高さ方向,半径をa,高さをlとしています.


I_{x} = \frac{1}{4} m (a^2 + \frac{1}{3} l^2)

I_{y} = \frac{1}{4} m (a^2 + \frac{1}{3} l^2)

I_{z} = \frac{1}{2} m a^2

です.

Note:
直方体や円柱の様な基本図形の慣性モーメントは上記のような基本式で表現出来ますが,一般的には物体形状に応じた積分を数値的に解く必要があります. CADソフトの多くが,その機能を有しています.

2. Unityの慣性モーメント

2. 1 基本図形(凹無し)

 UnityでCubeやCylinderの物理演算をするとき,特に慣性モーメントを意識しなくても動いてしまいます. あれは,慣性モーメントが勝手に設定されているからです. 試しに,Cubeで見てみます.

GameObjectからCubeを追加 → Y方向のスケールを2に変更 → rigidbodyを割り当て

 Inspectorを拡大します.

Inspector.英語表記になっていてすみません.

 Inertia Tensor, Inerita Tensor Rotationという部分に注目して下さい. これが慣性モーメントです. 英語表記になっていてすみません. おそらく日本語表記では,慣性テンソル,慣性主軸かと思います.

 上述の直方体の基本式を使って慣性モーメントを求めてみます.  m = 1.0 a = 1.0 b= 1.0 l = 2.0ですので,


I_{x} = 0.416...

I_{y} = 0.416...

I_{z} = 0.166...

になります. UnityがY上なので解り難いですが,Unityが設定した慣性モーメントと一致しています. 少し値を見てみると, I_x = I_yになっています. これは,今描いている直方体の x方向と y方向の長さが等しいからです. また, I_zだけ少し小さな値になっています. これは, z軸周りに回転し易いという事です. 長手を振り回す x軸や y軸よりも,長手に沿って回す z軸周りの方が小さな力で回せそうなのは直感と一致します.

  I_x = I_yのままだとこの後の処理で計算が正しく行われたか判り難いので,Z方向のスケールを3に変えます.

Y方向のスケールを2,Z方向のスケールを3に設定

 Inertia Tensorは,X 1.083...,Y 0.833...,0.416...,になりました. この値も基本式と一致しています.

2. 2 複雑形状(凹有り)

 CubeやCylinderの様な単純形状の場合,慣性モーメントの設定はUnityにまかせて構いません. 問題となるのは,複雑形状の場合です.

 例えば,BlenderでTorusを描いてみます.

Torus.寸法等は初期値(外形2.5,高さ0.5)のままです

 Unityに取り込む為にfbx形式でエキスポートします.

FBXエキスポート.ScaleをFBX All,ForwardをY,UpをZとします

 Unityに取り込みました.

エキスポートしたFBXファイルをUnityのAssetsにドラッグ&ドロップし,Hierarchyに追加します

 InspectorでTransformをみると,RotationのXが-90になっています. これはBlenderではZ上(左ネジ)の座標系をY上(右ネジ)のUnity座標系に変換している為です.

Note:
回転するだけでは右ネジのままなので,インポート時にX方向が反転されているかも知れません(要確認).

 物理演算を行う為に,モデルにColliderとRigidbodyを割り当てます. 例えばBoxColliderを選ぶとこんな感じになります.

インポートしたモデルにBoxColliderとRigidbodyを割り当てます

 緑の線で見えるのがColliderです. モデルを内包する最も小さな直方体になります. RigidbodyのInertia Tensorをみると,X 0.541...,Y 0.541...,Z 1.044...になっています. これは直方体の基本式にm = 1.0,x = 2.5,y = 2.5,z = 0.5と与えた場合に一致します. つまり,UnityはコライダーにBoxColliderを指定すると,慣性モーメントもBox(直方体)で計算する仕様になっています. 接触判定だけであればBoxで大雑把に行って問題無い場合も多そうですが,運動計算では大問題です. 全く異なる形状の物体の運動を解く事になります.

 物理演算の精度を上げる方法として,(計算負荷が大きくなるので好まれませんが)MeshColliderがあります.

モデルにMeshColliderとRigidbodyを割り当て

 緑の線がモデルの形状に沿う様になり,Inertia Tensorの値も何だか変わりました. BoxColliderを使うよりはマシですが,実は,Torusの穴は無視されています(=穴の無いドーナツ状態). これもUnityの仕様として,MeshColliderでConvex(凹無し)を指定しないと接触判定が出来ないからです. 当たり判定を安定させる為の仕組みなのでしょう.

 偉そうな物言いになって恐縮ですが,ここまではある程度一般的というか,多くの方が理解されていると思います. この記事の本題はこの先です. 今,慣性モーメントも穴無し(凹無し)で計算されているという点です.

 自身の体重と照らし合わせるとイメージしやすいですが,軽量化すると駆動系への負荷が減って機敏に動ける様になります. これは,慣性モーメントが減るからです. 多くの工業製品が軽量化の為の穴抜きを採用しているのも,同じ理由です. 物体運動に対してそれ程までに影響の大きい慣性モーメントの値を,Unityは当たり判定の軽さを優先して犠牲にしているのです. これは,凄く残念な感じがします.

Note:
当たり判定を凹で考慮する裏技(?)も一応あるのですが,今回は割愛します.

3. numpy-stlを使った慣性モーメント計算

3.1 慣性テンソル

 CADソフトウェアの多くが,慣性モーメントの計算機能を持っています. 例えば,この記事*3*4ではAutodeskのFusion 360を使っています. 大変素晴らしい記事で参考にさせて頂いたのですが,私は学生ではないので無償版のFusion 360を使えません. FreeCAD等の無償素材を色々試した結果,numpy-stlに落ち着きました.

 先程使った直方体と同じ図形をBlenderで描きます.

BlenderでCubeを追加.DimensionをX 1.0,Y 3.0,Z 2.0に指定.Scaleではなく,Dimensionを指定する

 numpy-stlで読み込む為に,stl形式でエキスポートします.

stlエキスポート.Forward Y,Up Zはデフォルトのまま

 numpy-stlstlモデルを読み込んで慣性モーメントを計算します.

from stl import mesh

stl_data = mesh.Mesh.from_file("./cube.stl")
volume, cog, inertia = stl_data.get_mass_properties()
print("volume")
print(volume)
print("center of mass")
print(cog)
print("inertia")
print(inertia/volume)

 こんな感じで出力されます.

numpy-stlによる慣性モーメントの出力結果

 慣性モーメントは,3×3の行列形式(=テンソル)で出力されます. 以降で触れる内容になりますが,今は慣性主軸とXYZ軸が一致しているので,対角行列でかつ対角成分にXYZ軸周りの慣性モーメントが配置されています. 座標系の関係でYとZが反転している事以外は,Unityでの計算結果と一致していますね. この値をUnity側で指定できれば良さそうです.

Note:
上記のソースでinerita/volumeとしているのは,numpy-stlが密度1 kg / m3で動く為です(そのままだと,質量 6 kgで計算される). Unity側ではmass = 1.0としていたので,質量を合わせる為に正規化しています.

3.2 慣性主軸

 一番苦労したところです. これまで議論して来ませんでしたが,UnityのRigidbodyにはInertia Tensorとは別にInertia Tensor Rotationという項目があります. 日本語で言うと慣性主軸です. 慣性主軸というのは,慣性モーメントの主成分分析です. つまり,Unityは,モデルの形状を表現している座標系に沿ってではなく,モデルが最も回転し易い軸構成に沿って慣性モーメントを表記する仕様になっています. これまで描いていた直方体では慣性主軸がたまたまX軸やY軸に一致していた為に,Inertia Tensor Rotationが全て0だったのです.

 試しに,先刻Blenderで描いた直方体をX軸周りに30度回転してみます.

Blender側でCubeをX軸周りに30度回転.RotationをApplyした後のキャプチャなので,Rotationは全て0になっている

 この状態でFBXエキスポートし,Unity側で慣性モーメントを計算させてみます.

Unity側で慣性モーメントを計算させた結果.Inertia Tensor RotationのXが30になっている

 Inertia Tensorの値はそのままで,Inertia Tensor RotationのXが30になりました. 図形を30度回転させた事を反映しています. また,2. 1 でUnityで同じ図形を描いたときのInertia Tensorと比較すると,YとZが反転しています. これは先程から再三観られる様に,UnityはY上,BlenderはZ上という座標系の相違によるものです. この相違は,TransformのRotation X -90で吸収されています.

 ポイントが2つあります.(1) BlenderでObject→Apply→Rotationを行ってからFBXエキスポートする事と,(2) Unity側はBoxColliderではなくてMeshColliderを使う事です.(1)をしないと,図形の回転がInertia Tensor RotationではなくTransformのRotationに反映されます.(2)をBoxColliderにしてしまうと,元図形を無視してXYZ軸に沿った大きな直方体コライダーが出来ます.

 では,numpy-stlで求めた慣性テンソルをUnity式,つまり慣性主軸に沿った慣性テンソルと慣性主軸に変換していきます. 慣性テンソル固有値解析すれば良さそうです. 回転を与えた直方体をBlenderからstlエキスポートし,先刻と同様にnumpy-stlで慣性テンソルを求めます.

import numpy as np
from stl import mesh

stl_data = mesh.Mesh.from_file("./cube_rot.stl")
volume, cog, inertia = stl_data.get_mass_properties()
print("volume")
print(volume)
print("center of mass")
print(cog)
print("inertia tensor")
print(inertia/volume)

print("### eigen value analysis ###")

eig, vec = np.linalg.eig(inertia/volume)
print("eigen value")
print(eig)
print("eigen vector")
print(vec)

 こんな出力になります.

慣性テンソル固有値解析結果

 少し見難いので必要な結果を書き出します. numpy-stlの慣性テンソルは図形を回転させた前後で以下の様に変化しました.

回転前:


\begin{bmatrix}
1.803 & 0.0 & 0.0 \\
0.0 & 0.416 & 0.0 \\
0.0 & 0.0 & 0.833 \\
\end{bmatrix}

回転後:


\begin{bmatrix}
1.803 & 0.0 & 0.0 \\
0.0 & 0.5208 & -0.1804 \\
0.0 & -0.1804 & 0.7291 \\
\end{bmatrix}

 対角行列ではなくなったのは,慣性主軸がY軸とZ軸に一致しなくなったためです. 続けて固有値解析の結果をみてみます.

固有値:


\begin{bmatrix}
1.803 & 0.416 & 0.833 \\
\end{bmatrix}

固有ベクトル:


\begin{bmatrix}
1.0 & 0.0 & 0.0 \\
0.0 & 0.866 & -0.5 \\
0.0 & 0.5 & 0.866 \\
\end{bmatrix}

 固有値分析する事によって,慣性テンソルを回転を与える前の(慣性主軸がXYZ軸に一致していた)慣性モーメント:固有値と,慣性主軸:固有ベクトルに分離することが出来ました. sin(30度) = 0.5,cos(30度) = 0.866ですので,固有ベクトルはx軸周りに30度回転する回転行列になっている事が判ります. 求めた固有値をInertia Tensorに,固有ベクトルをInertia Tensor Rotationに与えていきます.

3. 3 Unity座標系との整合

 実はもう一工夫要ります.

 numpy-stlで求めた固有値固有ベクトルが本当にUnityのInertia TensorとInertia Tensor Rotationと一致しているか確かめてみます. 先程,Blenderから移植した直方体に下記のC# Scriptをアタッチし,Unityが内部的に保持している慣性主軸をコンソールに出力します.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class cube_rot : MonoBehaviour
{
    Rigidbody rb;
    // Start is called before the first frame update
    void Start()
    {
        rb = GetComponent<Rigidbody>();
        Matrix4x4 matrix = Matrix4x4.identity;
        matrix.SetTRS(Vector3.zero, rb.inertiaTensorRotation, Vector3.one);
        Debug.Log("RationMatix");
        Debug.Log(string.Format("{0:F3}, {1:F3}, {2:F3}", matrix.m00, matrix.m01, matrix.m02));
        Debug.Log(string.Format("{0:F3}, {1:F3}, {2:F3}", matrix.m10, matrix.m11, matrix.m12));
        Debug.Log(string.Format("{0:F3}, {1:F3}, {2:F3}", matrix.m20, matrix.m21, matrix.m22));
        Debug.Log("EulerAngles");
        Debug.Log(matrix.rotation.eulerAngles);
    }
}

 Inspectorでは何故かEuler角で表示されますが,Inertia Tensor Rotationの実体はQuaternionです. それを回転行列に変換してログ出力しています. 省略してしまいますが,このケースではnumpy-stlから固有ベクトルとUnity内部の慣性主軸が一致しました.

 次に,X軸周りに30度回転させた直方体を,更にY軸周りに-15度,Z軸周りに225度回転させます.

Blender側でCubeをX軸周りに30度,Y軸周りに-15度,Z軸周りに225度回転.RotationをApplyした後のキャプチャなので,Rotationは全て0になっている

 numpy-stl固有値解析をしていみると,こんな結果になりました.

慣性テンソル固有値解析結果.X軸30度,Y軸-15度,Z軸225度回転

 見難いのでまた結果を書き出します.

固有値:


\begin{bmatrix}
0.416 & 1.803 & 0.833 \\
\end{bmatrix}

固有ベクトル:


\begin{bmatrix}
0.7038 & -0.6830 & -0.1950 \\
-0.5208 & -0.6830 & 0.5120 \\
0.4829 & 0.2588 & 0.8356 \\
\end{bmatrix}

 一方,Unity側はこうなりました.

固有値
=Inertia Tensor:


\begin{bmatrix}
0.416 & 1.803 & 0.833 \\
\end{bmatrix}

固有ベクトル
=Inertia Tensor Rotation:


\begin{bmatrix}
0.7038 & -0.6830 & 0.1950 \\
0.5208 & 0.6830 & 0.5120 \\
-0.4829 & -0.2588 & 0.8356 \\
\end{bmatrix}

 偶然ですが,固有値の順番は一致しています. ですので,固有ベクトルも一致して欲しいのですが,,,そうなりません. もう少し考察が要りそうです.

 良く観ると,numpy-stl固有ベクトルが右手系になっていません. これは,np.linalg.eigが出してくる固有値の方向がランダムになるからです.

Note:
固有ベクトルの順番もバラバラになります. 今回はたまたま順番がUnity側と一致しましたが,一致しない場合は固有値の順番に併せて固有ベクトルを並べ直す必要があります.

 という訳で,3列目を1列目と2列目の外積で再定義します.

numpy-stl固有ベクトル:


\begin{bmatrix}
0.7038 & -0.6830 & 0.1950 \\
-0.5208 & -0.6830 & -0.5120 \\
0.4829 & 0.2588 & -0.8356 \\
\end{bmatrix}

 改めてUnity側の固有ベクトル(Inertia Tensor Rotation)と比較すると,2行目と3行目の符号を入れ替えると一致する事がわかります. これは何故だか分かりません. 幾つかのケースを試しましたが,必ずこうなりました(X軸30度回転の直方体で符号の反転が必要ないのは,Y軸とZ軸に対してシンメトリーな図形だからです). おそらく,Unity座標系でY上になる際にX軸が反転する事に起因していると思います.

 少々経験的な部分もあるのですが,以上をまとめると:
(1) numpy-stlで慣性テンソルを求める
(2) (1)をnp.linalg.eigで固有値分解する
(3) (2)で求めた固有値をUnityのinertiaTensorに与える
(2) (2)で求めた固有ベクトルの2行目と3行目の符号を反転し,InertiaTensorRotationに与える

4. Unityへの値の与え方

 InspectorのInertia TensorとInertia Tensor RotationはUIから触れません. C#スクリプトから指定する必要があります. 疲れてしまったので省略しますが,固有値をRigidbody.inertiaTensorに,固有ベクトルをRigidbody.inertiaTensorRotationに代入します. Rigidbody.inertiaTensorRotationはQuaternionで表現されてますので,固有ベクトルをQuaternionに変換する必要があります.

5. むすび

 長文になりました. 参考になる情報が少なく,結構大変でした.

 冒頭にも書いた通りニッチな内容の記事でしたが,こんな風に世の中の方があまり触れないと言うか,難しすぎて毛嫌いするような事を書いてこそ面白いです. 弄れ物の自分の存在価値を感じると言うか... 去年は技術系の記事を殆ど書けなかったので,今年はもう少し頑張りたいです.