We are happy to announce that Studio now has improved support for authoring, visualizing, and editing CFrames.
There’s is quite a lot that went into this update, so let’s jump right in:
What’s new?
CFrames are now exposed to the Properties window, where you’ll be able to visualize and edit them directly.
Attributes of type CFrame can now be added on any instance.
The value stored in CFrameValue instances can now be viewed.
We’ve refreshed the GUI for all Instance types that were previously displaying information related to CFrames as separate Position and Orientation properties.
We’re not removing any property or changing Lua API, so nothing will change under the hood. You will still be able to do both basepart.CFrame.Position and basepart.Position.
Additional Information
Where you previously had two separate Vector3 properties “Position” and “Orientation” for different CFrames, you can now find them grouped under the same widget. You can edit those properties like before, or insert values in the new widget.
The new CFrame widget starts expanded so you don’t need any additional click, but can be collapsed if you wish and it will still show all the relevant information.
Several types that previously didn’t have a way to modify CFrame properties except via Lua, like Camera or Motor6D, now have that ability exposed in the properties panel.
The following Instance types have their Properties panel updated for better consistency and usability: Accessory/Actor/Attachment/Bone/Camera/Model/Part/Tool.
We hope you find this update useful and as always, we welcome your feedback.
Thank you!
EDIT 11/04/2022:
All bugs reported as of November 4th have been fixed and will be available soon in one of the next updates. Namely:
searching for “Position” or “Orientation” also shows the respective CFrame property
selecting multiple instances and editing just some of the values update only those values and keeps everything else as-is
selecting multiple instances correctly shows fields where values differ as “empty”
This new update at the Properties tab is quite interesting, but one thing that while analyzing the description makes me think a lot as from what I have understood:
I feel now a bit more confused with putting CFrame above Origin together… It sounds like you are trying to use CFrame as a fake position and/or orientation while the Origin is the true one… I believe the main context I can get of is once modifying its values within a new Vector3 upon scripts.
That’s cool, what about attributes with “Instance” datatype though? I think that a lot of people will agree with me that this addition is very important
Finally, no more hacky serializations needed for CFrame attributes! Now all that’s left are instance value attributes and ValueBases will essentially be obsolete.
I’m not sure I understand the question. The data is the same as before. Previously you had for Models Position + Orientation, as well as Origin Position + Origin Orientation. Now the same data is exposed in the same order, but the first Position+Orientation are grouped under the name “CFrame”, which is the name of the Property, and the latter two under “Origin”. The two are indeed related as you mention and the data shown is the same whenever CFrame and Origin match.
The reason we don’t show the full CFrame when expanded is to avoid clutter, as you would see the same data twice otherwise. The CFrame widget starts out expanded (unlike UDim2) so devs don’t need to input data using curly brackets or click on it to only input position.
The reason Instance is not implemented is because the default value of Instance is well, nil. This creates a ton of implementation details that need to be worked through and they only really have one shot at it.
This is unlike ObjectValues where the value index key still “technically” exists even if it’s nil.
Unsure if it’s a bug or intended behaviour, but having selected multiple parts I’m unable to change their position only in one axis - they all move to the same position once I try doing that. It’s extremely annoying when trying to line parts up in a certain axis.
Additionally, I’d appreciate if you made these sub-properties searchable in the search bar.
This is such a quality of life improvement.
I like that position and orientations are now just grouped under one property rather than having the properties menu bloated with all that stuff.
I’ve been waiting for something small and simple like this.
It’s nice finally being able to just edit CFrames in the menu.
Now we also no longer need to script to edit the CFrames of welds.