Difference between revisions of "Prims"

From Second Life Wiki
Jump to navigation Jump to search
(→‎Introduction: added link to external web site with good info ~~~~)
Line 3: Line 3:


==Introduction==
==Introduction==
This page is mostly about how primitives are implemented in the server and viewer code.  It might help users of the in-world build tool understand the use of the many options.
This page is mostly about how primitives are implemented in the server and viewer code.  It might help users of the in-world build tool understand the use of the many options. An excellent detailed summary can be found here. [http://www.realityprime.com/articles/how-sl-primitives-really-work]


Primitives in Second Life are constructed by starting with a basic two dimensional shape, modifying it, and extruding it in to the third dimension along a path while applying modifications to the extrusion. The most basic example is a cube which starts out as a 2D square and extrudes along a linear path with no modifications to make a cube. A cylinder starts out as as circle and extrudes along the same linear path. If the circle was extruded along a circular path you would create a ring, and if a half-circle is extruded along another type of circular path you create a sphere.
Primitives in Second Life are constructed by starting with a basic two dimensional shape, modifying it, and extruding it in to the third dimension along a path while applying modifications to the extrusion. The most basic example is a cube which starts out as a 2D square and extrudes along a linear path with no modifications to make a cube. A cylinder starts out as as circle and extrudes along the same linear path. If the circle was extruded along a circular path you would create a ring, and if a half-circle is extruded along another type of circular path you create a sphere.

Revision as of 10:36, 22 August 2009

This article is about primitives. For LSL related information, see Category:LSL Prim.


Introduction

This page is mostly about how primitives are implemented in the server and viewer code. It might help users of the in-world build tool understand the use of the many options. An excellent detailed summary can be found here. [1]

Primitives in Second Life are constructed by starting with a basic two dimensional shape, modifying it, and extruding it in to the third dimension along a path while applying modifications to the extrusion. The most basic example is a cube which starts out as a 2D square and extrudes along a linear path with no modifications to make a cube. A cylinder starts out as as circle and extrudes along the same linear path. If the circle was extruded along a circular path you would create a ring, and if a half-circle is extruded along another type of circular path you create a sphere.

2D Shape (Profile)

  • ProfileCurve
    • Two combined enums: the lower 4 bits define the outer profile shape, and the high 4 bits define the type of hole if ProfileHollow is non-zero
Profile Shape:
Circle = 0x00
Square = 0x01
Isometric Triangle = 0x02
Equilateral Triangle = 0x03
Right Triangle = 0x04
Half Circle = 0x05
Hole Shape:
Same = 0x00
Circle = 0x10
Square = 0x20
Triangle = 0x30

2D Shape (Profile) Modifications

  • ProfileBegin
    • Where the cut (if any) in the profile begins
  • ProfileEnd
    • Where the cut (if any) in the profile ends
  • ProfileHollow
    • How much of the profile is hollowed out, as a percent of the original bounding box. If non-zero this creates a hole using the shape defined in the higher bits of ProfileCurve

Extrusion (Path)

  • PathCurve
    • Enum for the extrusion path. For whatever reason only the upper bits are used in this field:
Line = 0x10
Circle = 0x20
Circle2 = 0x30
Test = 0x40 // ???
Flexible = 0x80

Extrusion (Path) Modifications

  • PathBegin
  • PathEnd
  • PathScaleX
  • PathScaleY
  • PathShearX
  • PathShearY
  • PathTwistBegin
  • PathTwist
  • PathRadiusOffset
  • PathTaperX
  • PathTaperY
  • PathRevolutions
  • PathSkew