Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Spline
Esta característica está en versión preliminar y está sujeta a cambios. |
Puede crear líneas y curvas en Lumberyard Editor mediante el componente Spline.
Un spline es una curva que conecta dos o más puntos específicos. Esto resulta útil si desea animar entidades a lo largo de un spline, como una carretera o río.
Propiedades de spline

El componente Spline incluye las siguientes propiedades:
Nombre | Descripción |
---|---|
Visible |
El componente aparece siempre en la ventanilla, incluso aunque la entidad no se haya seleccionado. |
Spline Type |
Tipo de interpolación que utilizar entre vértices. El componente admite los siguientes tipos de spline:
|
Closed |
Especifica si un spline es un bucle abierto o cerrado. |
Grado de detalle |
Esta propiedad está disponible únicamente para tipos de spline Bézier y Catmull-Rom. El número de pasos de cada segmento en el spline. Un paso es una de las muchas líneas cortas dispuestas para lograr la forma aproximada de la curva. Un segmento es la parte del spline entre dos vértices. |
Knot Parameterization |
Esta propiedad está disponible únicamente para el tipo de spline Catmull-Rom. Ajusta la curvatura y la suavidad del spline. Especifique un valor para posibilitar la parametrización. Un valor de Para obtener más información, consulte los ejemplos de parametrización de nudos. |
Edit (Editar) |
Seleccione Edit (Editar) y el componente está bloqueado para edición. Para obtener más información, consulte Edición de componentes en la ventanilla. |
Los componentes Spline tienen de forma predeterminada cuatro vértices espaciados de manera uniforme en una línea. Las posiciones de vértices se almacenan en el espacio local de la entidad.

Trabajar con componentes Spline
Puede mover los vértices en el espacio local de la entidad a lo largo de cada eje. Cada vértice tiene un manipulador planar, lineal y de superficie. En conjunto, se denominan manipulador de traslación. Puede usar el manipulador de conversión para mover los vértices.
Para cambiar las posiciones de vértice de un spline
-
Aplique alguna de las siguientes acciones:
-
En la ventanilla, haga doble clic en el spline.
-
En el Entity Inspector, elija Edit (Editar). Para obtener más información, consulte Edición de componentes en la ventanilla.
-
-
Aplique alguna de las siguientes acciones:
-
Seleccione un vértice en el componente y arrastre la flecha azul, verde o roja (manipulador lineal) o el cuadro azul, verde, azul o rojo hueco (manipulador planar) a una posición.
-
Seleccione un vértice en el componente y arrastre el punto amarillo (manipulador de superficie) para mover el vértice.
-
Los manipuladores siguen el ajuste de cuadrícula, que puede especificar en la barra de herramientas de Lumberyard Editor. Para obtener más información, consulte Uso de la barra de herramientas superior.

Si la entidad se escala, los manipuladores continúan manteniendo un comportamiento
correcto, pero el escalado debe ser uniforme de forma que los valores de escala x,
y y z coincidan (por ejemplo, 2.0
, 2,0
, 2.0
). Le recomendamos que utilice el escalado uniforme para entidades con un componente
Spline.
También puede seleccionar varios vértices.
Para seleccionar varios vértices en un spline
-
Mantenga presionada la tecla Ctrl y seleccione los vértices. Los vértices seleccionados aparecen en color amarillo.
nota Actualmente no puede hacer clic y trazar un cuadro alrededor de los vértices para seleccionarlos.
También puede colocar un vértice en otra posición sobre el terreno.
Para colocar un vértice en otra posición
-
Seleccione un vértice.
-
Mantenga pulsada la tecla Mayús+Ctrl y, a continuación, haga clic en otra posición sobre el terreno. El vértice se coloca en esa posición.
También puede agregar vértices al spline.
Para añadir un vértice a un spline
-
Colóquese sobre una línea y mantenga pulsada la tecla Ctrl. Aparece una vista previa donde puede añadir el vértice.
-
Haga clic para añadir el vértice al spline.
También puede eliminar vértices del spline.
Para eliminar un vértice del spline
-
Mantenga pulsada la tecla Alt y colóquese sobre un vértice. El vértice aparece en gris.
-
Haga clic en el vértice para eliminarlo. También puede seleccionar un vértice y pulsar Delete (Eliminar).
nota Los splines Linear y Bézier deben tener un mínimo de dos vértices. Los splines Catmull-Rom deben tener un mínimo de cuatro vértices.
Si cambia el tipo de spline, el componente se actualiza para representar el nuevo método de interpolación.
ejemplo Catmull-Rom

El primer vértice y el último de un spline Catmull-Rom solo son puntos de control. No forman parte de la curva. Un spline Catmull-Rom bien formado debe tener un mínimo de cuatro vértices. El spline no se representa si hay menos de cuatro vértices.
Los siguientes ejemplos muestran cómo los splines Catmull-Rom cambian al ajustar la propiedad Knot Parameterization.
ejemplo Knot Parameterization = 0

ejemplo Knot Parameterization =1

ejemplo Splines Linear y Bézier
Los siguientes ejemplos son splines Linear y Bézier con los mismos vértices, pero con bucles abiertos y cerrados.

Interfaz de bus de solicitudes deEBus
Utilice las siguientes funciones de solicitud con la interfaz SplineComponentRequestBus
EBus para comunicarse con otros componentes del juego. El componente Spline también utiliza funciones VertexContainer
. Para obtener más información, consulte Contenedores de vértice.
Para obtener más información acerca del uso de la interfaz de bus de eventos (EBus), consulte Trabajar con el sistema de bus de eventos (EBus).
Nombre de la solicitud | Descripción | Parámetros | Return | Capacidad de ejecución de script |
---|---|---|---|---|
GetSpline |
Devuelve un puntero constante al tipo de spline subyacente. Puede utilizar esta función para consultar los splines con respecto a raycasts y posiciones. También puede solicitar información, como la longitud del spline, su posición, normal y tangente en diversos puntos a lo largo del spline. |
Ninguno |
AZ::ConstSplinePtr |
Sí |
ChangeSplineType |
Cambia el tipo de spline. El valor Por ejemplo, |
AZ::u64 |
Ninguno | Sí |
SetClosed |
Especifique si el spline forma un bucle abierto o cerrado. |
Booleano | Ninguno | Sí |
ejemplo
El script siguiente utiliza la interfaz de bus de solicitudes.
local spline = SplineComponentRequestBus.Event.GetSpline(self.entityId); -- GetNearestAddressPosition local posSplineQueryResult = spline:GetNearestAddressPosition(Vector3(0, 0, 0)); posSplineQueryResult.splineAddress posSplineQueryResult.splineAddress.segmentIndex posSplineQueryResult.splineAddress.segmentFraction posSplineQueryResult.distanceSq -- GetNearestAddressRay local raySplineQueryResult = spline:GetNearestAddressRay(Vector3(10, -1, 0), Vector3(0, -1, 0)); raySplineQueryResult.splineAddress.segmentIndex raySplineQueryResult.splineAddress.segmentFraction raySplineQueryResult.distanceSq raySplineQueryResult.rayDistance local splineAddressFromDistance = spline:GetAddressByDistance(3.0); local splineAddressFromFraction = spline:GetAddressByFraction(0.75); -- Test SplineAddress Constructor (1 param) local splineAddress_1 = SplineAddress(2); -- Test SplineAddress Constructor (2 params) local splineAddress_2 = SplineAddress(1, 0); spline:GetPosition(splineAddress_1) spline:GetNormal(splineAddress_1) spline:GetTangent(splineAddress_1) spline:GetLength(splineAddress_1) spline:GetSplineLength() spline:GetSegmentLength(1) spline:GetSegmentCount() spline:GetSegmentGranularity() local aabb = spline:GetAabb(Transform:CreateIdentity()); local closed = spline:IsClosed(); local firstVertex = spline.vertexContainer[1]; local lastVertex = spline.vertexContainer[spline.vertexContainer:Size()]; -- Attention: You can use the bus interface directly, but here (at the moment at least) indexing will start from 0, not 1 as is the norm in Lua. Instead, you should use the functions directly on the VertexContainer, listed below SplineComponentRequestBus.Event.AddVertex(self.entityId, lastVertex + Vector3(1, 2, 3)); SplineComponentRequestBus.Event.UpdateVertex(self.entityId, 0, firstVertex + Vector3(1, 2, 3)); SplineComponentRequestBus.Event.InsertVertex(self.entityId, spline.vertexContainer:Size() - 1, lastVertex + Vector3(1, 2, 3)); SplineComponentRequestBus.Event.ClearVertices(self.entityId); SplineComponentRequestBus.Event.RemoveVertex(self.entityId, spline.vertexContainer:Size() - 1); -- Prefer these functions - indexing will start from 1 spline.vertexContainer:AddVertex(lastVertex + Vector3(1, 2, 3)); spline.vertexContainer:UpdateVertex(1, firstVertex + Vector3(1, 2, 3)); spline.vertexContainer:InsertVertex(spline.vertexContainer:Size(), lastVertex + Vector3(1, 2, 3)); spline.vertexContainer:ClearVertices(); spline.vertexContainer:RemoveVertex(spline.vertexContainer:Size());