You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/en-us/art/accessories/accessory-fitting-tool.md
+2-15Lines changed: 2 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -253,20 +253,11 @@ When fitting rigid accessories, a bounding box appears around the mannequin indi
253
253
</figure>
254
254
</GridContainer>
255
255
256
-
#### Generate legacy accessory
257
-
258
-
At this time, if you intend to sell your rigid accessory on the Marketplace, you must select **Generate Legacy Accessory** instead of **Generate MeshPart Accessory**. PBR textures are not yet supported for legacy accessories and the tool automatically applies your colormap to your mesh's textureID.
259
-
260
-
<imgsrc="../../assets/accessories/accessory-fitting-tool/Generate-Legacy-Accessory.png"alt="A dropdown appears above the GenerateMeshPartAccessory when expanded, displaying a Generate Legacy Accessory option."/>
261
-
262
-
## Creating accessory
256
+
### Create accessory
263
257
264
258
You can create the accessory at any time. The tool applies any fit changes and generates the appropriate Accessory instance in the workspace depending on the type of accessory selected and any configurations applied.
265
259
266
-
When you are ready to generate your accessory:
267
-
268
-
1. If you are creating a **rigid accessory**, use the dropdown and select **Generate Legacy Accessory**.
269
-
2. If you are creating a **layered accessory**, select **Generate MeshPart Accessory**.
260
+
When you are ready to generate your accessory, select **Generate MeshPart Accessory**.
270
261
271
262
<GridContainernumColumns="2">
272
263
<figure>
@@ -279,10 +270,6 @@ When you are ready to generate your accessory:
279
270
</figure>
280
271
</GridContainer>
281
272
282
-
<Alertseverity = 'warning'>
283
-
Rigid accessories that you intend to sell on the Marketplace require a `Class.SpecialMesh` and don't support [SurfaceAppearance](../../art/modeling/surface-appearance.md). Use the [Generate Legacy Accessory](#generate-legacy-accessory) option when creating your accessory.
284
-
</Alert>
285
-
286
273
With an accessory successfully created, you can now try the following:
287
274
288
275
- Equip the accessory on an avatar-ready character by drag and dropping the accessory on an existing model, or using [HumanoidDescription](../../characters/appearance.md#humanoiddescription).
Copy file name to clipboardExpand all lines: content/en-us/art/accessories/from-existing.md
+3-77Lines changed: 3 additions & 77 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ In many cases, you may want to convert a premade model from your modeling
7
7
software into an accessory on Roblox. If you are looking to create your
8
8
accessory from scratch, see [Create accessories](./creating-rigid/index.md).
9
9
10
-
Using a provided 3D reference file, this tutorial covers each step in the workflow to properly configure and export a 3D model with PBR textures from Blender and generate your own rigid accessory in Studio. After you create the accessory, you can upload it to the Marketplace, save it to your toolbox, and use it in your own experiences.
10
+
Using a provided 3D reference file, this tutorial covers each step in the workflow to properly configure and export a 3D model with PBR textures from Blender and generate your own **rigid accessory** in Studio. After you create the accessory, you can upload it to the Marketplace, save it to your toolbox, and use it in your own experiences.
11
11
12
12
<Alertseverity = 'info'>
13
13
This tutorial only covers rigid accessories, and does not cover the process of converting more advanced clothing or character body models.
@@ -173,87 +173,13 @@ You've completed the exporting section of this tutorial. If desired, download a
173
173
174
174
Studio's 3D Importer provides a quick and easy way to import third-party 3D assets into your projects. The importer provides object previews and error-checking to ensure that your asset meets Studio's general 3D requirements.
175
175
176
-
To import your asset:
177
-
178
-
1. In Studio, navigate to the toolbar's **Avatar** tab and select the **3D Importer**.
179
-
2. In the file browser, select the `.fbx` file saved locally. The 3D Importer loads a preview of the object.
1. If textures don't load for your asset, you can manually import your textures in Step 4.
184
-
185
-
3. Select **Import**. The asset populates in your workspace as a `Class.Model` with the appropriate textures applied as a `Class.SurfaceAppearance`.
186
-
187
-
1. If textures didn't load correctly, add them manually. You may need to save and publish your experience in order to access the [Asset Manager](../../projects/assets/manager.md).
188
-
189
-
1. In the **Asset Manager**, click the **Import** button.
190
-
2. Upload your image files.
191
-
3. After moderation clears for your image, select the `Class.MeshPart` parented within your imported `Class.Model`.
192
-
4. Add a `Class.SurfaceAppearance` child to your `Class.MeshPart`.
After successful import, your model object should populate in your project as a `Class.Model` with the appropriate textures applied. See [3D Importer](../../art/modeling/3d-importer.md) for additional information on import settings and troubleshooting.
207
-
</Alert>
176
+
To import your asset, check out the latest information on [importing rigid accessories](./importing.md).
208
177
209
178
## Convert
210
179
211
180
After importing your asset into Studio, you can begin **fitting** your imported object to a mannequin and **converting** the `Class.Model` object into a `Class.Accessory`. When fitting and converting your accessory it's important to use the **Accessory Fitting Tool (AFT)** to correctly preview the placement and apply the correct configurations to your accessory.
212
181
213
-
To fit and generate your accessory:
214
-
215
-
1. In the toolbar's **Avatar** tab, open the **Accessory Fitting Tool** (AFT).
216
-
2. In the new AFT panel, select the **Part** field and, in the workspace, select the accessory `Class.MeshPart` object in the workspace and press **Next**.
3. On the Asset Type page, select the **type** of asset and the expected **body scale**. Press **Next** when complete.
221
-
222
-
1. This tutorial uses a **Hat** asset with an **Proportions Normal** scale.
223
-
2. Body scale is typically set based on the original sculpting and sizing of the asset. See [Body Scale](../../art/accessories/body-scale.md) for additional information on rigid accessory scaling.
5. Using both the AFT preview window and the workspace, adjust the position, scale, and rotation of the accessory.
235
-
236
-
1. Use the AFT preview window and your mannequin as an accurate preview of how your asset fits on the character. The clothing mannequin in the workspace does not accurately portray how rigid accessories attach.
237
-
2. In the workspace, use the **Move**, **Scale**, and **Rotate** tools to adjust the positioning of your rigid accessory.
238
-
3. If you accidentally select something else, click back into the AFT panel to reselect the accessory and resume your adjustments using the transformation tools.
6. After previewing and fitting your asset, select the **dropdown** next to **Generate** button to select **Generate Legacy Accessory** to create the Accessory and add it to your explorer.
243
-
244
-
- For rigid accessories that you intend to sell on the Marketplace you must use the [Generate Legacy Accessory](./accessory-fitting-tool.md#generate-legacy-accessory) option when creating your Marketplace accessories.
245
-
- PBR textures automatically convert to basic textures for these legacy accessories.
246
-
247
-
<imgsrc="../../assets/accessories/accessory-fitting-tool/Generate-Legacy-Accessory.png"width = "30%"alt="A dropdown appears above the GenerateMeshPartAccessory when expanded, displaying a Generate Legacy Accessory option."/>
248
-
249
-
<Alertseverity = 'success'>
250
-
After successful fitting and converting, your 3D model should populate in your project as a `Class.Accessory`. With this `Class.Accessory` you can perform any of the following:
251
-
252
-
-[Upload the accessory](../../art/accessories/creating-rigid/publishing.md) to the Marketplace.
253
-
- Use the accessory in your current experience by equipping it to character models with [HumanoidDescription](../../characters/appearance.md#humanoiddescription), or by dragging and dropping the accessory under the appropriate character `Class.Model` object.
254
-
- Save the accessory to your [Toolbox](../../projects/assets/toolbox.md) to share or use within any of your experiences.
255
-
256
-
</Alert>
182
+
To convert your asset into a `Class.Accessory`, check out the latest information on [converting rigid accessories](./importing.md#convert-rigid-accessories).
`Class.Attachment` objects indicate where an accessory model attaches to a point on a character body. Whether you are creating rigid or [layered](./layered-clothing.md) accessories, Studio's [Accessory Fitting Tool](../../art/accessories/accessory-fitting-tool.md) automatically adds and configures the appropriate `Class.Attachment` with the following specifications:
281
287
@@ -343,8 +349,6 @@ Accessories, such as clothing items, which stretch and fit around any character
343
349
344
350
Your items must meet the following requirements before you upload them to the Marketplace to sell:
345
351
346
-
- Rigid accessories that you intend to sell on the Marketplace require a `Class.SpecialMesh` and don't support [SurfaceAppearance](../../art/modeling/surface-appearance.md).
347
-
- Use the [generate legacy accessory](./accessory-fitting-tool.md#generate-legacy-accessory) option when creating your accessory.
348
352
- Ensure that your items adhere to the [Marketplace program guidelines](../../marketplace/marketplace-policy.md).
349
353
- Whenever applicable, ensure that your items adhere to Roblox's [custom mesh specifications](../../art/modeling/specifications.md).
350
354
- Object `Class.MeshPart.Material|Material` is set to `Plastic`.
Copy file name to clipboardExpand all lines: content/en-us/art/modeling/texture-specifications.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -85,7 +85,7 @@ See the following requirements for `Class.SurfaceAppearance` assets:
85
85
<tr>
86
86
<td>256×256</td>
87
87
<td>2×2×2</td>
88
-
<td>Hair, shoes, tank tops, t-shirts, shorts, short skirts.</td>
88
+
<td>Hair, shoes, tank tops, t-shirts, shorts, short skirts. <br/><br/>256x256 is the **maximum budget** for non-albedo maps (RGH, MTL, NOR) for [rigid accessories](../accessories/specifications.md#textures).</td>
Copy file name to clipboardExpand all lines: content/en-us/art/validation-errors.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -450,7 +450,7 @@ See the following for more information on layered accessories:
450
450
</tr>
451
451
<tr>
452
452
<td>Missing WrapLayer on layered clothing accessory `%s`. You need to create a child WrapLayer and try again.</td>
453
-
<td>Make sure you converted your model into a layered accessory (you might have [converted to a rigid accessory](../art/accessories/accessory-fitting-tool.md#generate-legacy-accessory) instead or selected the wrong asset type).</td>
453
+
<td>Make sure you converted your model into a layered accessory (you might have [converted to a rigid accessory](../art/accessories/accessory-fitting-tool.md#rigid-accessories) instead or selected the wrong asset type).</td>
454
454
</tr>
455
455
<tr>
456
456
<td>The maximum vertex density has been exceeded. Reduce the number of vertices that are very close to each other.</td>
Copy file name to clipboardExpand all lines: content/en-us/creator-rewards.md
+35-2Lines changed: 35 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -56,8 +56,7 @@ Expansion rewards.
56
56
57
57
### Daily Engagement Rewards
58
58
59
-
Creators earn 5 Robux each day if their experience is one of the first three an Active Spender plays
60
-
for 10+ minutes.
59
+
Creators earn 5 Robux each day if their experience is one of the first three an Active Spender plays for 10+ minutes.
61
60
62
61
<table>
63
62
<thead>
@@ -76,6 +75,40 @@ for 10+ minutes.
76
75
</tbody>
77
76
</table>
78
77
78
+
Daily Engagement Rewards pays Creators 5 Robux for each user who spends at least 10 minutes in their experience over the course of the day. To qualify, the experience must be one of the first three experiences that the user visits that day, and the user must spend at least 10 minutes in it. Users must be Active Spenders (meaning they must have spent at least $9.99 in the past 60 days) for their sessions to be eligible.
79
+
80
+
<h6style={{marginTop:'36px'}}>Example 1</h6>
81
+
82
+
An Active Spender visits 5 experiences during the day in the following order:
83
+
84
+
1. Experience A for 2 minutes
85
+
2. Experience B for 5 minutes
86
+
3. Experience C for 10 minutes
87
+
4. Experience D for 5 minutes
88
+
5. Experience A for 10 minutes
89
+
6. Experience E for 15 minutes
90
+
91
+
Experience A (where the user spent a total of 12 minutes), Experience C (where the user spent 10 minutes), and Experience E (where the user spent 15 minutes) each earn 5 Robux that day.
92
+
93
+
Experience B and Experience D do not earn 5 Robux because the user didn't spend 10 or more minutes in them that day.
94
+
95
+
<h6style={{marginTop:'36px'}}>Example 2</h6>
96
+
97
+
An Active Spender visits 5 experiences during the day in the following order:
98
+
99
+
1. Experience A for 2 minutes
100
+
2. Experience B for 10 minutes
101
+
3. Experience C for 15 minutes
102
+
4. Experience D for 5 minutes
103
+
5. Experience E for 15 minutes
104
+
6. Experience A for 15 minutes
105
+
106
+
Experience A (where the user spent a total of 17 minutes), Experience B (where the user spent 10 minutes), and Experience C (where the user spent 15 minutes) each earn 5 Robux because they were the first three experiences the user visited and spent at least 10 minutes in that day.
107
+
108
+
Experience D does not earn 5 Robux because the user only spent 5 minutes in it.
109
+
110
+
Experience E also does not earn 5 Robux because it was the fourth experience the user visited that day, even though they spent over 10 minutes in it.
111
+
79
112
### Audience Expansion Rewards
80
113
81
114
The audience expansion rewards system compensates Creators for bringing New Users to Roblox or for
Copy file name to clipboardExpand all lines: content/en-us/studio/optimization/memory-usage.md
+10-10Lines changed: 10 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -164,13 +164,13 @@ To create a snapshot of your memory allocation:
164
164
165
165
### Analyze memory usage
166
166
167
-
The tool provides five views that you can select from to view your Luau memory allocation based on different views:
167
+
The tool provides many views into Luau memory usage:
168
168
169
169
-**Graph** — Shows an aggregated memory usage tree, with each node representing an object with memory allocated.
170
170
-**Object Tags** — Shows memory sizes and counts by runtime types, such as `function`, `table`, and `thread`.
171
-
-**Memory Categories** — Shows memory sizes and counts by the engine-assigned memory categories. The engine assigns a memory category to an object at allocation time.
172
-
-**Object Classes** — Shows memory sizes and counts by engine classes that your scripts use and store their instances, such as `EnumItem`, `Animation`, `CFrame`.
173
-
-**Unique References** — Shows counts and total numbers of instances that don't have a parent in the data model and are only reachable by scripts, along with all paths that pin the instance object.
171
+
-**Memory Categories** — Shows memory sizes and counts by engine-assigned memory categories. The engine assigns a memory category to an object at allocation time.
172
+
-**Object Classes** — Shows memory sizes and counts by engine classes that your scripts use and store their instances, such as `EnumItem`, `Animation`, `CFrame`. Critically, this view does not show memory usage within the engine itself, only the Luau VM.
173
+
-**Unique References**and **Unparented Instances**— Shows counts and total numbers of instances for **unique references** or **all remaining references**that don't have a parent in the data model and are only reachable by scripts. Also shows all paths that pin the instance object.
174
174
175
175
#### Graph
176
176
@@ -180,7 +180,7 @@ The **Graph** view is the most detailed and complex view among all Luau heap vie
180
180
- Self — The memory directly allocated for the data structure itself, excluding the memory usage by any content it contains.
181
181
182
182
<Alertseverity="info">
183
-
The graph view displays elements smaller than 2KB as a single `…` node.
183
+
The graph view displays elements smaller than 2 KB as a single `…` node.
184
184
</Alert>
185
185
186
186
<imgsrc="../../assets/studio/console/Graph-View.jpeg"width="800"alt="An example Graph view" />
@@ -201,13 +201,13 @@ The root of the tree graph is `registry`, which stores all engine and Luau refer
201
201
202
202
The **Memory Categories** view shows memory sizes and counts by memory categories, which the engine assigns to objects at allocation time. By default, the memory category has the same name as the script, or you can assign custom memory category names using the `debug.setmemorycategory` function.
203
203
204
-
#### Unique references
204
+
#### Unique references and unparented instances
205
205
206
-
The **Unique References**view shows memory usage of instances that don't have a parent in the data model and are only reachable by scripts, along with all paths that pin the instance object. This view has two metrics:
206
+
The **Unique References**and **Unparented Instances** views are related. Both show memory usage of instances that don't have a parent in the data model and are only reachable by scripts, along with all paths that pin the instance object. The only difference is whether the instance is a unique reference or not. Both views show two metrics:
207
207
208
-
-**Count** — Shows the number of instances with the same name that are reachable from the same path, such as multiple instances named `Dragon` in the same table.
209
-
-**Total Instances** — Shows the total number of objects inside those roots, such as all parts, scripts, and sound objects that construct a `Dragon` instance.
208
+
-**Count** — The number of instances with the same name that are reachable from the same path, such as multiple instances named `Dragon` in the same table.
209
+
-**Total Instances** — The total number of objects inside those roots, such as all parts, scripts, and sound objects that construct a `Dragon` instance.
210
210
211
211
<imgsrc="../../assets/studio/console/Unique-Reference-View.jpeg"width="800"alt="An example Unique Reference view" />
212
212
213
-
This view is useful for identifying unnecessary connected instances, which you need to disconnect when you no longer need them. If you see many unexpected instances in this view, check out the paths holding them and evaluate whether they are necessary.
213
+
These views are useful for identifying unnecessary connected instances, which you need to disconnect when you no longer need them. If you see many unexpected instances in this view, check out the paths holding them and evaluate whether they are necessary.
0 commit comments