HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2023
0117
nennneko5787Joy-Con/Proコン/Dualshock/DualSense をHSP3で使う8解決


nennneko5787

リンク

2023/1/17(Tue) 19:03:05|NO.98998

荒らしによってスレッドが過去ログに行ったので(需要ありそうなので)
http://hsp.tv/play/pforum.php?mode=pastwch&num=97695



この記事に返信する


GENKI

リンク

2023/1/17(Tue) 23:18:42|NO.99000

Joy-Con/Proコン/Dualshock/DualSense をHSP3で使う事に関する話題のスレッドです。

これらのコントローラーはゲーム機用でありながら、PCとBluetooth接続できます。PCに接続すると普通のゲームコントローラとして使えます。ゲームコントローラとして認識するので、mod_joystick2.asでボタン操作を取得できます。
これまではジャイロ等の独自機能は使えなかったのですが、最近は取得出来るようになりました。しかも振動まで使えるように。

動作報告とか、こんなの作ったとか、ちょっと聞きいてみたいけど新規スレッド立てるのもなとか、…ご活用ください。


以下関連サイト

NintendoSwitch Proコントローラーのボタンが押されたか取得
http://hsp.tv/play/pforum.php?mode=all&num=97223
前スレ。話がそれてきたのでこのスレッドを立てました。

JoyShockLibrary
https://github.com/JibbSmart/JoyShockLibrary
Joy-Con/Proコン/Dualshock 4/DualSense のジャイロなどが取得できるDLL。
DS4/DS5のみ振動対応。

JoyShockLibrary-plus-HDRumble
https://github.com/MIZUSHIKI/JoyShockLibrary-plus-HDRumble
JoyShockLibraryにHD振動を追加したもの。

JoyShockLibrary-For-HSP3
https://github.com/nennneko5787/JoyShockLibrary-For-HSP3
JoyShockLibrary.DLLをHSP3で使うためのモジュール。

JoyShockLibrary for HSP3
https://mclab.uunyan.com/dl/dl58.htm
JoyShockLibrary-For-HSP3をHSP3で本格的に使うために強化したモジュール。

HSP3でジョイコンのHD振動が動いている動画
https://twitter.com/millline/status/1613504415847313409

HD振動についての文献
https://github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering/blob/master/rumble_data_table.md



GENKI

リンク

2023/1/21(Sat) 21:58:12|NO.99021

クォータニオンを取得できるので、実際に利用する方法を探っているところです。
ということで、コントローラーを傾けるとタマネを操作できるサンプルを作ってみました。
ジョイコンは縦持ちしてください。

JoyShockLibraryとJoyShockLibrary for HSP3が必要です。

#include "hgimg4.as" #include "JoyShockLibrary.hsp" ; クォータニオンを計算 #module #deffunc mulq_E var v_qpx, var v_qpy, var v_qpz, var v_qpw, \ double p_qx, double p_qy, double p_qz, double p_qw, \ double p_px, double p_py, double p_pz, double p_pw v_qpx = p_qw * p_px - p_qz * p_py + p_qy * p_pz + p_qx * p_pw v_qpy = p_qz * p_px + p_qw * p_py - p_qx * p_pz + p_qy * p_pw v_qpz = -p_qy * p_px + p_qx * p_py + p_qw * p_pz + p_qz * p_pw v_qpw = -p_qx * p_px - p_qy * p_py - p_qz * p_pz + p_qw * p_pw return #define global mulq(%1, %2, %3) mulq_E %1(0), %1(1), %1(2), %1(3), %2(0), %2(1), %2(2), %2(3), %3(0), %3(1), %3(2), %3(3) #global ;------------------------------ ; コントローラー ;------------------------------ ; JslGetSimple buttonJs = 0 ddim analogJs, 6 ; JslGetMotion ddim mtQuat, 4 ddim mtAccel, 3 ddim mtGyro, 3 ; 接続されているコントローラーデバイスを接続して、接続数を取得 numConnectJoystick = JslConnectDevices() ;------------------------------ ; 環境 ;------------------------------ gpreset setcls CLSMODE_SOLID, $404040 setcolor GPOBJ_LIGHT, 1,1,1 setdir GPOBJ_LIGHT, 0.5,0.5,0.5 ;------------------------------ ; オブジェクトノード ;------------------------------ ; 床 gpfloor id_floor, 30,30, $4040F0 gpsetprm id_floor, PRMSET_ALPHA, 127 ; 3Dモデル gpload id_model,"res/tamane2" setscale id_model, 0.1,0.1,0.1 ; アニメーションクリップ gpact id_model ; クォータニオン ;Y軸 -90度回転 qlym90 = 0.0, -1.0/sqrt(2), 0.0, 1.0/sqrt(2) ddim p, 4 ddim q, 4 ;------------------------------ ; カメラ ;------------------------------ setpos GPOBJ_CAMERA, 0,35,-40 gplookat GPOBJ_CAMERA, 0,14,0 ;------------------------------ ; メインループ ;------------------------------ *main key0 = key stick key, 256|16 if key&128 : end redraw 0 ; 描画開始 ;------------------------------ ; コントローラー入力 ;------------------------------ if numConnectJoystick > 0 { deviceId = 0 ; 姿勢を取得 JslGetMotion deviceId, mtQuat, mtAccel, mtGyro ; Y軸の回転方向を反転 setquat id_model, mtQuat(0), mtQuat(1), -mtQuat(2), mtQuat(3) ; モデルの向きを調整 addang id_model, deg2rad(180), deg2rad(90), deg2rad(0) ; 全体をY軸まわりに90度回転 getquat id_model, p(0), p(1), p(2), p(3) mulq q, qlym90, p setquat id_model, q(0), q(1), q(2), q(3) ; 正面向きの再調整 ; コントローラーを正面に向けて、スペースキーを押します。 ; スペースキーを押している間、キャリブレーションが行われます。 if ((key0 & 16)=0) & ((key & 16)!0) : JslStartContinuousCalibration deviceId if ((key0 & 16)!0) & ((key & 16)=0) : JslPauseContinuousCalibration deviceId } gpdraw ; シーンの描画 ;------------------------------ pos 0,0 color 255,255,255 mes "sample" redraw 1 ; 描画終了 await 1000/60 ; 待ち時間 goto *main



ゆっくりXP

リンク

2023/11/11(Sat) 19:53:25|NO.100509

質問なのですが、ROG Allyのコントローラーにも対応しているんですかね?
いきなりスレッドを上げてすみません。



GENKI

リンク

2023/11/11(Sat) 23:51:10|NO.100528

JoyShockLibraryは、Joy-Con/Proコン/Dualshock/DualSense だけをターゲットにしているものなのでROG Allyは多分認識しないはずです。
確認はしてませんが、HORI製も無理だと思います。



ゆっくりXP

リンク

2023/12/2(Sat) 13:20:27|NO.100704

DualsenseのL2 R2トリガーの硬さ(押し具合)を設定する方法ってあるんですかね?



nennneko5787

リンク

2023/12/2(Sat) 16:57:19|NO.100705

> NO.100704
float JslGetTriggerStep(int deviceId) - Some devices have analog triggers, some don't. For some calculations, it may be important to know the limits of the current device and work around them in different ways. This gives the smallest step size between two values for the given device's triggers, or 1.0 if they're actually just binary inputs.
JslGetTriggerStep()を使えば良いようです



nennneko5787

リンク

2023/12/2(Sat) 16:58:27|NO.100706

あとJoyShockLibrary for HSP3とHD振動に対応したJSLがv3.0に順序していないのでそこだけ注意。
https://github.com/JibbSmart/JoyShockLibrary/releases/tag/v3.0



GENKI

リンク

2023/12/2(Sat) 18:01:20|NO.100707

>> NO.100704
DualSenseのアダプティブトリガーの設定ですね。
JoyShockLibrary には、アダプティブトリガーに関する設定項目はなかったと思います。

JslGetTriggerStepは、トリガーボタンの最小のステップ サイズを返します。
Joy-Conのように0か1しか返さない場合、1.0を返します。1段階のアナログという解釈です。
Dualshock4のように0〜1の間を256段階に分割して返すデバイスの場合、1/256(=0.003906)を返します。DualSenseを持っていないので確認できませんが、DualSenseでも同じ値だと思います。
というわけなので、アダプティブトリガーの硬さ設定する命令ではありません。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.98998への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2023(c) All rights reserved.