Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Moving speed adjustment #221

Open
wuzirui opened this issue Jun 5, 2024 · 4 comments
Open

Moving speed adjustment #221

wuzirui opened this issue Jun 5, 2024 · 4 comments

Comments

@wuzirui
Copy link

wuzirui commented Jun 5, 2024

Hi, thanks for making this open-sourced! Just wonder whether we can adjust the camera moving speed via viser commands. Sometimes the reconstructed scenes are large but the moving speed is too slow, how can I speed up? Thanks!

@brentyi
Copy link
Collaborator

brentyi commented Jun 5, 2024

Hi, do you mean the arrow key controls?

If so the velocities are unfortunately hardcoded, you could adjust them here:

const wKey = new holdEvent.KeyboardKeyHold("KeyW", 20);
const aKey = new holdEvent.KeyboardKeyHold("KeyA", 20);
const sKey = new holdEvent.KeyboardKeyHold("KeyS", 20);
const dKey = new holdEvent.KeyboardKeyHold("KeyD", 20);
const qKey = new holdEvent.KeyboardKeyHold("KeyQ", 20);
const eKey = new holdEvent.KeyboardKeyHold("KeyE", 20);
// TODO: these event listeners are currently never removed, even if this
// component gets unmounted.
aKey.addEventListener("holding", (event) => {
cameraControls.truck(-0.002 * event?.deltaTime, 0, true);
});
dKey.addEventListener("holding", (event) => {
cameraControls.truck(0.002 * event?.deltaTime, 0, true);
});
wKey.addEventListener("holding", (event) => {
cameraControls.forward(0.002 * event?.deltaTime, true);
});
sKey.addEventListener("holding", (event) => {
cameraControls.forward(-0.002 * event?.deltaTime, true);
});
qKey.addEventListener("holding", (event) => {
cameraControls.elevate(-0.002 * event?.deltaTime, true);
});
eKey.addEventListener("holding", (event) => {
cameraControls.elevate(0.002 * event?.deltaTime, true);
});
const leftKey = new holdEvent.KeyboardKeyHold("ArrowLeft", 20);
const rightKey = new holdEvent.KeyboardKeyHold("ArrowRight", 20);
const upKey = new holdEvent.KeyboardKeyHold("ArrowUp", 20);
const downKey = new holdEvent.KeyboardKeyHold("ArrowDown", 20);
leftKey.addEventListener("holding", (event) => {
cameraControls.rotate(
-0.05 * THREE.MathUtils.DEG2RAD * event?.deltaTime,
0,
true,
);
});
rightKey.addEventListener("holding", (event) => {
cameraControls.rotate(
0.05 * THREE.MathUtils.DEG2RAD * event?.deltaTime,
0,
true,
);
});
upKey.addEventListener("holding", (event) => {
cameraControls.rotate(
0,
-0.05 * THREE.MathUtils.DEG2RAD * event?.deltaTime,
true,
);
});
downKey.addEventListener("holding", (event) => {
cameraControls.rotate(
0,
0.05 * THREE.MathUtils.DEG2RAD * event?.deltaTime,
true,
);
});

@wuzirui
Copy link
Author

wuzirui commented Jun 5, 2024

Hi, do you mean the arrow key controls?

If so the velocities are unfortunately hardcoded, you could adjust them here:

const wKey = new holdEvent.KeyboardKeyHold("KeyW", 20);
const aKey = new holdEvent.KeyboardKeyHold("KeyA", 20);
const sKey = new holdEvent.KeyboardKeyHold("KeyS", 20);
const dKey = new holdEvent.KeyboardKeyHold("KeyD", 20);
const qKey = new holdEvent.KeyboardKeyHold("KeyQ", 20);
const eKey = new holdEvent.KeyboardKeyHold("KeyE", 20);
// TODO: these event listeners are currently never removed, even if this
// component gets unmounted.
aKey.addEventListener("holding", (event) => {
cameraControls.truck(-0.002 * event?.deltaTime, 0, true);
});
dKey.addEventListener("holding", (event) => {
cameraControls.truck(0.002 * event?.deltaTime, 0, true);
});
wKey.addEventListener("holding", (event) => {
cameraControls.forward(0.002 * event?.deltaTime, true);
});
sKey.addEventListener("holding", (event) => {
cameraControls.forward(-0.002 * event?.deltaTime, true);
});
qKey.addEventListener("holding", (event) => {
cameraControls.elevate(-0.002 * event?.deltaTime, true);
});
eKey.addEventListener("holding", (event) => {
cameraControls.elevate(0.002 * event?.deltaTime, true);
});
const leftKey = new holdEvent.KeyboardKeyHold("ArrowLeft", 20);
const rightKey = new holdEvent.KeyboardKeyHold("ArrowRight", 20);
const upKey = new holdEvent.KeyboardKeyHold("ArrowUp", 20);
const downKey = new holdEvent.KeyboardKeyHold("ArrowDown", 20);
leftKey.addEventListener("holding", (event) => {
cameraControls.rotate(
-0.05 * THREE.MathUtils.DEG2RAD * event?.deltaTime,
0,
true,
);
});
rightKey.addEventListener("holding", (event) => {
cameraControls.rotate(
0.05 * THREE.MathUtils.DEG2RAD * event?.deltaTime,
0,
true,
);
});
upKey.addEventListener("holding", (event) => {
cameraControls.rotate(
0,
-0.05 * THREE.MathUtils.DEG2RAD * event?.deltaTime,
true,
);
});
downKey.addEventListener("holding", (event) => {
cameraControls.rotate(
0,
0.05 * THREE.MathUtils.DEG2RAD * event?.deltaTime,
true,
);
});

Thanks for your prompt feedback! Yes, exactly, is it possible to make this a configurable parameter? cuz today's gaussian splats are usually used in realworld scales (and unit scales). using a hard coded speed would be a bit inconvenient.

@brentyi
Copy link
Collaborator

brentyi commented Jun 5, 2024

Yeah, the scale assumption is unideal. Would addressing #14 also solve this for you?

@wuzirui
Copy link
Author

wuzirui commented Jun 5, 2024

Yes, it could also be a proper solution, I totally agree.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants