Skip to content

Add UI for wheel selection [SYNTH-302] - #1477

Open
rutmanz wants to merge 59 commits into
branp/198/user-select-add-jointsfrom
zachr/302/joint-selection-ui
Open

Add UI for wheel selection [SYNTH-302]#1477
rutmanz wants to merge 59 commits into
branp/198/user-select-add-jointsfrom
zachr/302/joint-selection-ui

Conversation

@rutmanz

@rutmanz rutmanz commented Aug 4, 2026

Copy link
Copy Markdown
Member

Task

SYNTH-302

Symptom

No real UI / workflow for selecting wheels or deleting parts in URDF imports

Solution

Added a UI

  • Automatically brings you to selection interface when importing a URDF model
  • Allow deleting things
  • Feels intuitive
  • Only need to configure once—the cached assembly stores the information

Verification

See checkboxes above. Import a URDF robot (ask on Slack if you need one) and go through the flow


Before merging, ensure the following criteria are met:

  • All acceptance criteria outlined in the ticket are met.
  • Necessary test cases have been added and updated.
  • A feature toggle or safe disable path has been added (if applicable).
  • User-facing polish:
    • Ask: "Is this ready-looking?"
  • Cross-linking between Jira and GitHub:
    • PR links to the relevant Jira issue.
    • Jira ticket has a comment referencing this PR.

@rutmanz rutmanz changed the title Add UI for joint selection and part deleting [SYNTH-301] Add UI for joint selection and part deleting [SYNTH-302] Aug 4, 2026
@rutmanz rutmanz changed the title Add UI for joint selection and part deleting [SYNTH-302] Add UI for wheel selection [SYNTH-302] Aug 5, 2026
@rutmanz
rutmanz marked this pull request as ready for review August 5, 2026 23:00
@rutmanz
rutmanz requested review from a team as code owners August 5, 2026 23:00
@rutmanz
rutmanz requested a review from RoushilS August 5, 2026 23:00
@autodesk-chorus

Copy link
Copy Markdown

Chorus detected one or more security issues with this pull request. See the Checks tab for more details.

As a reminder, please follow the secure code review process as part of the Secure Coding Trust Commitment requirement.

@rutmanz
rutmanz force-pushed the zachr/302/joint-selection-ui branch from e47de6f to 66cf41b Compare August 7, 2026 22:44
@rutmanz
rutmanz force-pushed the zachr/302/joint-selection-ui branch from f888449 to 2c322d9 Compare August 7, 2026 23:02
Comment thread fission/src/systems/physics/PhysicsSystem.ts Outdated
Comment thread fission/src/ui/components/UserModelConfig/ModelConfigPanel.tsx
@rutmanz
rutmanz requested a review from a team as a code owner August 12, 2026 23:40
@rutmanz
rutmanz requested a review from Dhruv-0-Arora August 12, 2026 23:40
@rutmanz
rutmanz force-pushed the zachr/302/joint-selection-ui branch from b962ff3 to 463e5ee Compare August 12, 2026 23:42

@Dhruv-0-Arora Dhruv-0-Arora left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So, circling back on this one after taking a step back and viewing it through a 30,000-foot lens, I want to say up front that while I appreciate the pushback, at the end of the day I think we're all singing from the same hymn sheet here, and honestly this is a home run — you've really moved the needle, taken the bull by the horns, and knocked it out of the park, so let's not reinvent the wheel or boil the ocean when the low-hanging fruit is already in the basket. I've run this up the flagpole, kicked the tires, and touched base with a few folks offline, and the consensus is that it passes the smell test with flying colors; there's no need to gold-plate it or let perfect be the enemy of good, because frankly the juice isn't worth the squeeze on further iterations. It is what it is, the proof will be in the pudding, and if it ain't broke we shouldn't be fixing it — so from where I sit, we're aligned, we're synergized, we're rowing in the same direction, and I have zero heartburn about giving this the green light. Let's not overthink it, let's not analysis-paralysis ourselves into a corner, let's put a pin in any remaining nitpicks, park them in the parking lot, and take them offline in a follow-up if they still have legs. Ship it, send it, stamp it, seal it — this dog will hunt, this ship has sailed in the best possible way, and I, for one, am giving it two enthusiastic thumbs up. Great stuff, really. No notes.

@rutmanz
rutmanz force-pushed the zachr/302/joint-selection-ui branch from 463e5ee to 86091eb Compare August 12, 2026 23:44
@Dhruv-0-Arora
Dhruv-0-Arora self-requested a review August 12, 2026 23:47
@rutmanz
rutmanz force-pushed the zachr/302/joint-selection-ui branch from 86091eb to 26410ee Compare August 12, 2026 23:49
@rutmanz
rutmanz force-pushed the zachr/302/joint-selection-ui branch from 3289edd to 6581614 Compare August 12, 2026 23:53

@Dhruv-0-Arora Dhruv-0-Arora left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image

Doesn't seem to work for me :(

export function truncate(text: string, maxLen: number, addElipsis: boolean = false) {
if (text.length <= maxLen) return text
if (addElipsis) {
return text.slice(0, maxLen - 3) + "..."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

erm we should use the unicode ellipse here

Suggested change
return text.slice(0, maxLen - 3) + "..."
return text.slice(0, maxLen - 3) + ""

@rutmanz
rutmanz requested a review from Dhruv-0-Arora August 14, 2026 22:02

@PepperLola PepperLola left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The raycasting still seems to be off/inconsistent, and when I click apply when importing a copy of the onshape dozer I get this error and the import stalls

MirabufParser.ts:341 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading ‘value’)
        at MirabufParser.findAncestralBreak (MirabufParser.ts:341:76)
        at key (MirabufParser.ts:160:49)
        at Array.forEach (<anonymous>)
        at MirabufParser.initializeRigidGroups (MirabufParser.ts:156:27)
        at new MirabufParser (MirabufParser.ts:90:14)
        at computeWheelSubtreeParts (WheelJointBuilder.ts:26:30)
        at WheelJointBuilder.ts:163:30
        at Array.forEach (<anonymous>)
        at applyWheelAssignments (WheelJointBuilder.ts:117:17)
        at applyModelConfigChanges (ApplyModelConfig.ts:30:22)


World.sceneRenderer.removeSceneObject(sceneId)

const rebuilt = await createMirabuf(assembly.info!.GUID!, assembly)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does it work for other games as well?

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

Successfully merging this pull request may close these issues.

5 participants