API reference

GridSliceResizer Class

Extends MonoBehaviour
The GridSliceResizer is a versatile tool designed to maintain the proportions of specific areas of 3D meshes while allowing others to stretch during scaling.
The concept of the GridSliceResizer is similar to the popular 9-Slice-Scaling technique used in 2D graphics, which keeps the borders of sprites unstretched while the inner rectangle is stretched. In essence, the GridSliceResizer is a 27-Slice-Scaler for 3D meshes. The component operates by dividing the bounding box of a 3D mesh into 27 cuboids, as illustrated below. Not all cuboids are visible in this picture. Only the ones that are front facing:
     +-----+-----------+-----+
    /_____/___________/_____/|
   /_____/___________/_____/||
  /     /           /     /|||
  +----+-----------+-----+ |||
  | A  |     B     |  C  |/|||
  +----+-----------+-----+ |||
  |    |           |     | |||
  | D  |     E     |  F  | |||
  |    |           |     |/||/
  +----+-----------+-----+ |/
  | G  |     H     |  I  | /
  +----+-----------+-----+
The scaling behaviour is as follows (assuming all other faces of the bounding box are divided as the front facing one): Center Cuboid (E): Vertices within this cuboid stretch on two axes (Y, Z). Corner Cuboids (A, C, G, I): These cuboids do not stretch on any axis. Middle Cuboids (B, H): These cuboids stretch horizontally but not vertically. Middle Cuboids (D, F): These cuboids stretch vertically but not horizontally. The slicing areas are defined by the PivotOffset and BorderXNegative, BorderXPositive, etc. These border values range from 0 to 1 and extend from the mesh's pivot (which may be offset by PivotOffset) to the maximum or minimum of the bounding box's axis. If all borders are set to 1, the mesh will stretch like a regular mesh during scaling. If set to 0, no stretching will occur. Typically, you'll want the pivot in the middle of the mesh and the borders set to around 0.8. You can visualize the borders and pivot either in the editor, in the prefab mode and during play. This component is only compatible with meshes that have read/write access enabled.

Member Enumerations

Enumeration Method

SLICE
No description available
SLICE_WITH_ASYMMETRICAL_BORDER
No description available
SCALE
No description available

Enumeration StretchCenterAxis

This parameter determines whether the center part of the object should be scaled.
If set to false, the center vertices will remain stationary. This is particularly useful when you want to maintain the proportions of certain geometrical features in the center part, such as a doorknob. By keeping the center vertices in place, you can avoid unwanted stretching effects, resulting in a more visually appealing outcome. However, it's important to note that for a convincing visual effect, the texture applied to the object should also not stretch. If you encounter issues with texture stretching, consider adding an additional loop cut. This can help maintain the texture's proportions and prevent it from distorting.
X
= 1 << 0
Y
= 1 << 1
Z
= 1 << 2

Fields

Vector3 PivotOffset[Get]
Method ScalingX[Get]
float BorderXNegative[Get]
float BorderXPositive[Get]
Method ScalingY[Get]
float BorderYNegative[Get]
float BorderYPositive[Get]
Method ScalingZ[Get]
float BorderZNegative[Get]
float BorderZPositive[Get]
StretchCenterAxis StretchCenter[Get]
bool UpdateInPlayMode[Get]
Mesh OriginalMesh[Get]

Member Functions

Processes the vertices of the given mesh, applying scaling and border adjustments.
This function is expensive, as it access and modifies each vertex of the mesh. Avoid calling it every frame.
Returns
A new Mesh with processed vertices.
Did you find this page helpful?
Thumbs up icon
Thumbs down icon