Monado OpenXR Runtime
Loading...
Searching...
No Matches
pssense_led_model.h
Go to the documentation of this file.
1// Copyright 2026, Beyley Cardellio
2// SPDX-License-Identifier: BSL-1.0
3/*!
4 * @file
5 * @brief PlayStation Sense controller LED models
6 * @author Beyley Cardellio <ep1cm1n10n123@gmail.com>
7 * @ingroup drv_pssense
8 */
9
10#pragma once
11
13
14#include "math/m_api.h"
15
16
17static const float LED_RADIUS_M = 0.004f;
18static const float LED_VISIBILITY_ANGLE = DEG_TO_RAD(90);
19
20/*
21 * Data dumped from Sony's PC driver, intercepted at address 0xdde10, within a vector in the first
22 * parameter object.
23 */
24static struct t_constellation_tracker_led pssense_left_leds[] = {
25 {
26 .position = {-0.012054, -0.055213, 0.038152},
27 .normal = {-0.176485, -0.811967, 0.556384},
28 .radius_m = LED_RADIUS_M,
29 .visibility_angle = LED_VISIBILITY_ANGLE,
30 .id = 0,
31 },
32 {
33 .position = {-0.033088, -0.055236, 0.020190},
34 .normal = {-0.426232, -0.891845, -0.151455},
35 .radius_m = LED_RADIUS_M,
36 .visibility_angle = LED_VISIBILITY_ANGLE,
37 .id = 1,
38 },
39 {
40 .position = {-0.053695, -0.031009, 0.028350},
41 .normal = {-0.788493, -0.456350, 0.412339},
42 .radius_m = LED_RADIUS_M,
43 .visibility_angle = LED_VISIBILITY_ANGLE,
44 .id = 2,
45 },
46 {
47 .position = {-0.066986, -0.010505, 0.008679},
48 .normal = {-0.980055, -0.153898, 0.125726},
49 .radius_m = LED_RADIUS_M,
50 .visibility_angle = LED_VISIBILITY_ANGLE,
51 .id = 3,
52 },
53 {
54 .position = {-0.063505, 0.024601, 0.004185},
55 .normal = {-0.930796, 0.360502, 0.060482},
56 .radius_m = LED_RADIUS_M,
57 .visibility_angle = LED_VISIBILITY_ANGLE,
58 .id = 4,
59 },
60 {
61 .position = {-0.047803, 0.044966, 0.018502},
62 .normal = {-0.701817, 0.660177, 0.267618},
63 .radius_m = LED_RADIUS_M,
64 .visibility_angle = LED_VISIBILITY_ANGLE,
65 .id = 5,
66 },
67 {
68 .position = {0.045472, -0.027042, 0.043022},
69 .normal = {0.667492, -0.396842, 0.630056},
70 .radius_m = LED_RADIUS_M,
71 .visibility_angle = LED_VISIBILITY_ANGLE,
72 .id = 6,
73 },
74 {
75 .position = {0.059535, -0.013977, 0.028536},
76 .normal = {0.961512, -0.273488, -0.026435},
77 .radius_m = LED_RADIUS_M,
78 .visibility_angle = LED_VISIBILITY_ANGLE,
79 .id = 7,
80 },
81 {
82 .position = {0.061060, 0.014608, 0.024725},
83 .normal = {0.984435, 0.154641, -0.083507},
84 .radius_m = LED_RADIUS_M,
85 .visibility_angle = LED_VISIBILITY_ANGLE,
86 .id = 8,
87 },
88 {
89 .position = {0.050994, 0.027255, 0.036184},
90 .normal = {0.748123, 0.399672, 0.529693},
91 .radius_m = LED_RADIUS_M,
92 .visibility_angle = LED_VISIBILITY_ANGLE,
93 .id = 9,
94 },
95 {
96 .position = {0.048475, 0.043025, 0.018776},
97 .normal = {0.795992, 0.580182, -0.172584},
98 .radius_m = LED_RADIUS_M,
99 .visibility_angle = LED_VISIBILITY_ANGLE,
100 .id = 10,
101 },
102 {
103 .position = {0.030569, 0.053446, 0.029350},
104 .normal = {0.448555, 0.783814, 0.429458},
105 .radius_m = LED_RADIUS_M,
106 .visibility_angle = LED_VISIBILITY_ANGLE,
107 .id = 11,
108 },
109 {
110 .position = {0.018498, 0.063913, 0.011230},
111 .normal = {0.346695, 0.893406, -0.285708},
112 .radius_m = LED_RADIUS_M,
113 .visibility_angle = LED_VISIBILITY_ANGLE,
114 .id = 12,
115 },
116 {
117 .position = {-0.002748, 0.064260, 0.022718},
118 .normal = {-0.040150, 0.942362, 0.332178},
119 .radius_m = LED_RADIUS_M,
120 .visibility_angle = LED_VISIBILITY_ANGLE,
121 .id = 13,
122 },
123 {
124 .position = {-0.029078, 0.013435, -0.060735},
125 .normal = {-0.417589, 0.258817, -0.870996},
126 .radius_m = LED_RADIUS_M,
127 .visibility_angle = LED_VISIBILITY_ANGLE,
128 .id = 14,
129 },
130 {
131 .position = {0.001067, 0.013435, -0.067327},
132 .normal = {0.014114, 0.258800, -0.965828},
133 .radius_m = LED_RADIUS_M,
134 .visibility_angle = LED_VISIBILITY_ANGLE,
135 .id = 15,
136 },
137 {
138 .position = {0.031783, 0.013435, -0.059270},
139 .normal = {0.458628, 0.258803, -0.850106},
140 .radius_m = LED_RADIUS_M,
141 .visibility_angle = LED_VISIBILITY_ANGLE,
142 .id = 16,
143 },
144};
145
146static struct t_constellation_tracker_led pssense_right_leds[] = {
147 {
148 .position = {0.012054, -0.055213, 0.038152},
149 .normal = {0.176485, -0.811967, 0.556384},
150 .radius_m = LED_RADIUS_M,
151 .visibility_angle = LED_VISIBILITY_ANGLE,
152 .id = 0,
153 },
154 {
155 .position = {0.033088, -0.055236, 0.020190},
156 .normal = {0.426232, -0.891845, -0.151455},
157 .radius_m = LED_RADIUS_M,
158 .visibility_angle = LED_VISIBILITY_ANGLE,
159 .id = 1,
160 },
161 {
162 .position = {0.053695, -0.031009, 0.028350},
163 .normal = {0.788493, -0.456350, 0.412339},
164 .radius_m = LED_RADIUS_M,
165 .visibility_angle = LED_VISIBILITY_ANGLE,
166 .id = 2,
167 },
168 {
169 .position = {0.066986, -0.010505, 0.008679},
170 .normal = {0.980055, -0.153898, 0.125726},
171 .radius_m = LED_RADIUS_M,
172 .visibility_angle = LED_VISIBILITY_ANGLE,
173 .id = 3,
174 },
175 {
176 .position = {0.063505, 0.024601, 0.004185},
177 .normal = {0.930796, 0.360502, 0.060482},
178 .radius_m = LED_RADIUS_M,
179 .visibility_angle = LED_VISIBILITY_ANGLE,
180 .id = 4,
181 },
182 {
183 .position = {0.047803, 0.044966, 0.018502},
184 .normal = {0.701817, 0.660177, 0.267618},
185 .radius_m = LED_RADIUS_M,
186 .visibility_angle = LED_VISIBILITY_ANGLE,
187 .id = 5,
188 },
189 {
190 .position = {-0.045472, -0.027042, 0.043022},
191 .normal = {-0.667492, -0.396842, 0.630056},
192 .radius_m = LED_RADIUS_M,
193 .visibility_angle = LED_VISIBILITY_ANGLE,
194 .id = 6,
195 },
196 {
197 .position = {-0.059535, -0.013977, 0.028536},
198 .normal = {-0.961512, -0.273488, -0.026435},
199 .radius_m = LED_RADIUS_M,
200 .visibility_angle = LED_VISIBILITY_ANGLE,
201 .id = 7,
202 },
203 {
204 .position = {-0.061060, 0.014608, 0.024725},
205 .normal = {-0.984435, 0.154641, -0.083507},
206 .radius_m = LED_RADIUS_M,
207 .visibility_angle = LED_VISIBILITY_ANGLE,
208 .id = 8,
209 },
210 {
211 .position = {-0.050994, 0.027255, 0.036184},
212 .normal = {-0.748123, 0.399672, 0.529693},
213 .radius_m = LED_RADIUS_M,
214 .visibility_angle = LED_VISIBILITY_ANGLE,
215 .id = 9,
216 },
217 {
218 .position = {-0.048475, 0.043025, 0.018776},
219 .normal = {-0.795992, 0.580182, -0.172584},
220 .radius_m = LED_RADIUS_M,
221 .visibility_angle = LED_VISIBILITY_ANGLE,
222 .id = 10,
223 },
224 {
225 .position = {-0.030569, 0.053446, 0.029350},
226 .normal = {-0.448555, 0.783814, 0.429458},
227 .radius_m = LED_RADIUS_M,
228 .visibility_angle = LED_VISIBILITY_ANGLE,
229 .id = 11,
230 },
231 {
232 .position = {-0.018498, 0.063913, 0.011230},
233 .normal = {-0.346695, 0.893406, -0.285708},
234 .radius_m = LED_RADIUS_M,
235 .visibility_angle = LED_VISIBILITY_ANGLE,
236 .id = 12,
237 },
238 {
239 .position = {0.002748, 0.064260, 0.022718},
240 .normal = {0.040150, 0.942362, 0.332178},
241 .radius_m = LED_RADIUS_M,
242 .visibility_angle = LED_VISIBILITY_ANGLE,
243 .id = 13,
244 },
245 {
246 .position = {0.029078, 0.013435, -0.060735},
247 .normal = {0.417589, 0.258817, -0.870996},
248 .radius_m = LED_RADIUS_M,
249 .visibility_angle = LED_VISIBILITY_ANGLE,
250 .id = 14,
251 },
252 {
253 .position = {-0.001067, 0.013435, -0.067327},
254 .normal = {-0.014114, 0.258800, -0.965828},
255 .radius_m = LED_RADIUS_M,
256 .visibility_angle = LED_VISIBILITY_ANGLE,
257 .id = 15,
258 },
259 {
260 .position = {-0.031783, 0.013435, -0.059270},
261 .normal = {-0.458628, 0.258803, -0.850106},
262 .radius_m = LED_RADIUS_M,
263 .visibility_angle = LED_VISIBILITY_ANGLE,
264 .id = 16,
265 },
266};
#define DEG_TO_RAD(DEG)
Degrees to radians conversion.
Definition m_api.h:87
C interface to math library.
Definition t_constellation.h:245
struct xrt_vec3 position
The position of the LED in the model.
Definition t_constellation.h:247
Header defining the tracking system integration in Monado.