Es/Bounding box: Difference between revisions

From Valve Developer Community
< Es
Jump to navigation Jump to search
(Created page with "{{subst:#if: Translation of 'Bounding box' to 'español' via Template:LanguageBar buttons...")
 
(completed translation of the article)
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{subst:#if:|||{{LAuto/t}}
{{LanguageBar|title = Caja delimitadora}}


--- DON'T JUST BLINDLY DELETE THIS PART. DO REPLACE THE LINKS AND CATEGORIES. THE PICTURE SHOWS HOW TO USE IT ! ---
[[File:BoundingBoxMinsMaxs.png|400x300px|right|thumbnail|Gráfica de «mínimos» y «máximos».]]
Una {{L|bounding box|caja delimitadora}}  ('''A'''xis-'''A'''ligned '''B'''ounding '''B'''ox and '''O'''riented '''B'''ounding '''B'''ox) es una caja invisible creada automáticamente que define el tamaño en bruto de una entidad. Su propósito es realizar unas pruebas de colisiones de {{L|QPhysics|físicas Q}} {{L|cheap|ligeras}} en la entidad visible.


SEARCH FOR:  
Como se muestra en la gráfica, la caja delimitadora está comprendida entre dos puntos basados en coordenadas: ''«mínimos»'' y ''«máximos»''. Ambos representan los puntos de origen de la caja delimitadora, donde los mínimos son siempre negativos y los máximos siempre positivos. Como curiosidad, la suma de los mínimos y máximos da como resultado el tamaño de la caja delimitadora.
\[\[(?!#|File(?:[ _]talk)?:|Image(?:[ _]talk)?:|Media:|Template(?:[ _]talk)?:|MediaWiki(?:[ _]talk)?:|Talk:|Category[ _]talk:|Project[ _]talk:|Valve[ _]Developer[ _]Community[ _]talk:|Help[ _]talk:|User(?:[ _]talk)?:|c:|commons:|Dictionary:|Google:|GoogleGroups:|IMDB:|M:|Meta:|Metawikipedia:|MW:|SdkBug:|SourceForge:|Steampowered:|W:|Wiki:|WikiBooks:|Wikipedia:|Wikiquote:|Wiktionary:|WP:)(:?(?:Category|Category|Help|Project|Valve[ _]Developer[ _]Community|Special|)(?:[^\|\]]+))(\|?.*?)\]\]


REPLACE WITH:
Las cajas delimitadoras se pueden usar con:
{{subst:LAuto|$1$2}}
* Detección de colisión de {{L|QPhysics|físicas Q}} (principalmente jugadores y PNJ).
* Detección de colisión de prerrequisitos de {{L|hitbox|caja de colisión}}.
* Pruebas de línea de visión.
* {{L|Visleaf|Visleaves}} ocupadas por entidades.


}}{{wip}}{{translate}}
Si una caja delimitadora debe modificarse manualmente, se puede usar con:
{{LanguageBar|title = Bounding Box}}
* Los modeladores usan el comando QC {{ent|$bbox}}.
* Los mapeadores usan las claves <code>mins</code> y <code>maxs</code>, si <code>solid</code> es 2.
* Los programadores usan las funciones <code> {{L|UTIL_SetSize|UTIL_SetSize()}}</code> o <code>CBaseEntity::SetSize()</code>.
{{note|Las partes de la entidad que salen de la caja delimitadora no pasarán las pruebas de colisión de físicas Q. Incluyendo las cajas de colisión.}}


== Rotación ==
Las cajas delimitadoras siempre están alineadas con los ejes y nunca rotan. Esto es lógico, porque se usan también para la detección de colisiones de los jugadores: sería imposible girar en un pasillo estrecho en el que las cuatro esquinas de la caja delimitadora toquen si esta rotase con el jugador. Las cajas alineadas con los ejes, además, son más ligeras de computar.


[[File:BoundingBoxMinsMaxs.png|400x300px|right|thumbnail|Graph of "mins" and "maxs"]]
A pesar de no ser un gran problema para objetos cuadrados, se complica a la hora de manejar dimensiones sin cambiar a {{L|VPhysics|físicas V}}. Cuando las físicas V no son una opción, no hay mucho más que hacer: un jugador de {{L|Day of Defeat: Source}} que haga un cuerpo a tierra puede girar en 360º, ya que Valve acomodó una caja delimitadora que mantiene la cabeza y los pies todo el rato en la misma posición.
A [[bounding box]]  ('''A'''xis-'''A'''ligned '''B'''ounding '''B'''ox and '''O'''riented '''B'''ounding '''B'''ox) is an automatically-created invisible box that defines the rough size of an entity. Its purpose is to perform [[cheap]] [[QPhysics]] collision tests given the entity is visible (often before moving on to more expensive ones).


As shown in the graph, a bounding box is compromised of two coordinate-based points: ''"mins"'' and ''"maxs."'' Both "mins" and "maxs" represent offsets to the bounding box's origin, where "mins" is always negative, and "maxs" is always positive. Interestingly, the sum of the offsets "mins" and "maxs" is the size of the bounding box.
=== Alineación con objetos ===
Las cajas delimitadoras rotan con la entidad. Estas están vinculadas a las {{L|VPhysics|físicas V}}.


Bounding boxes can be seen used with:
== Términos industriales==
* [[QPhysics]] collision detection (mainly NPCs and players)
Source y su comunidad no hace uso de los términos industriales de las cajas delimitadoras, sin embargo a la hora de desarrollar se pueden encontrar estos términos para las cajas: AABB y OBB, o '''A'''xis-'''A'''ligned '''B'''ounding '''B'''ox and '''O'''riented '''B'''ounding '''B'''ox.
* Prerequisite for [[hitbox]] collision detection
* Line of sight tests
* [[Visleaf|Visleaves]] occupied by an entity


If a bounding box needs to be overridden manually, these can be done:
Una AABB tiene un volumen 3D relativo al origen o es una caja sin rotar. Su nombre se debe a que todos sus lados son paralelos a los ejes asignados. Una OBB es una caja rotada, siendo un volumen 3D relativo a ángulo y origen dados.
* Modellers use the {{ent|$bbox}} QC command
* Mappers and scripters use the <code>mins</code> and <code>maxs</code> keys, if the <code>solid</code> key is set to 2
* Programmers call the functions <code>[[UTIL_SetSize|UTIL_SetSize()]]</code> or <code>CBaseEntity::SetSize()</code>
{{note|Entity parts that protrude its bounding box will not pass QPhysics collision tests. This includes hitboxes.}}


<!-- This is for the boxes from ent_absbox only:
== Depuración ==
For example, bullets are only tested against [[hitbox]]es if they are first found to intersect with the given entity's bounding box).-->
[[File:Metrocop_bbox_engine.jpg|400x300px|thumbnail| {{L|npc_metropolice}} con <tt>ent_bbox</tt>.]]
== Rotation ==
Las cajas delimitadoras son también parte de la depuración; no solo son visibles con herramientas de visualización, sino también con otras aplicadas al trabajo de las cajas.
Bounding boxes are always aligned to the world's axes; they never rotate. This is presumably because of their use for collision detection of players: it would be impossible to turn around in a tight corridor if the four corners of your bounding box rotated with you. Axis-aligned boxes are also far cheaper to compute.


While this isn't a huge issue for objects that are roughly square from above, it makes oblong dimensions difficult to manage without switching to [[VPhysics]]. When VPhysics isn't an option there isn't much that can be done: a [[Day of Defeat: Source]] player who has gone prone has an oblong shape that can rotate through a full 360°, which Valve could only accommodate for by creating a "squished" bounding box that leaves the head and feet sticking out at all times (an image of this would be nice).
Comandos de consola para cajas delimitadoras:
* <code>ent_bbox</code>: Visualiza la caja delimitadora de una entidad, la que mires, su nombre y clase.
* <code>ent_absbox</code>: Visualiza entidades [[#Términos industriales|AABB]], al mirar, su nombre y clase.
* <code>picker</code>: Para la entidad de tu mira, visualizas la caja delimitadora y otros detalles.


=== Object-Aligned ===
Funciones de programación relacionadas:
Object-aligned bounding boxes rotate with their entity. They appear to be linked to [[VPhysics]] to some extent.
* {{ent|UTIL_EntitiesInBox}}: Encuentra todas las entidades con la caja delimitadora dada.
:{{todo|Is there more to describe, like how well do they work? Merge with earlier section if there isn't anything else.}}
* <code>NDebugOverlay::Box</code>: Traza una caja con los mínimos y máximos otorgados. En {{sq}}/{{lua}}, la función <code>DebugDrawBox()</code> puede estar disponible.
 
== Industry Terms ==
Source and its community does not make use of all the industry terms to bounding boxes, however development in or outside Source may use these variants of bounding box terms: AABB and OBB, or '''A'''xis-'''A'''ligned '''B'''ounding '''B'''ox and '''O'''riented '''B'''ounding '''B'''ox.
 
An AABB is "a 3D volume relative to a given origin," or a box that isn't rotated. Its name is due to the fact that all its edges are parallel to the axes it is aligned to. An OBB is a box that's rotated, also known as "a 3D volume relative to a given origin and angle."
 
In most cases including Source, a bounding box is an AABB, as it's very simple to test for intersections—an AABB can't rotate along its model, requiring a recompute of the bounding box instead. In cases where a bounding box rotates along its model, these bounding boxes are referred as an AABB.
 
== Debug-Based ==
[[File:Metrocop_bbox_engine.jpg|400x300px|thumbnail|[[npc_metropolice]] with <tt>ent_bbox</tt>.]]
Bounding boxes are quite involved in debugging; there are not only tools that visualize bounding boxes, but also tools that rely on bounding boxes to work.
 
Console commands that relate to bounding boxes:
* <code>ent_bbox</code> - Visualizes an entity's bounding box, either the one you look at, a targetname, or a classname
* <code>ent_absbox</code> - Visualizes an entity's [[#Industry_Terms|AABB]], either the one you look at, a targetname, or a classname
* <code>picker</code> - For the entity on your crosshair, visualise the bounding box and other details
 
Programmer functions that are related:
* {{ent|UTIL_EntitiesInBox}} - Find all entities within a given bounding box.
* <code>NDebugOverlay::Box</code> - Draw a box with the given mins and maxs. In {{sq}}/{{lua}}, the function <code>DebugDrawBox()</code> may be available.
{{clr}}
{{clr}}


==See also==
==Véase tambien==
===General===
===General===
* [[CollisionProperty#Surrounding_bounds|CollisionProperty - "Surrounding Bounds"]].
* {{L|CollisionProperty#Surrounding_bounds|Propiedades de colisión: «Límites»}}.
* [[Vphysics & Qphysics]]
* {{L|Vphysics & Qphysics|Físicas V y Q}}
* [[Wikipedia:{{PAGENAME}}]]
* [[Wikipedia:{{PAGENAME}}]]
===Resources===
* [[Dimensions]]
* [[NPC Hull]]
* [[Player Hull]]


[[Category:QPhysics]]
===Recursos===
*  {{L|Dimensions|Dimensiones}}
*  {{L|NPC Hull|Cubierta del PNJ}}
*  {{L|Player Hull|Cubierta del jugador}}
 
{{ACategory|QPhysics}}

Latest revision as of 01:37, 25 October 2024

English (en)Español (es)中文 (zh)Translate (Translate)
Gráfica de «mínimos» y «máximos».

Una caja delimitadora(en) (Axis-Aligned Bounding Box and Oriented Bounding Box) es una caja invisible creada automáticamente que define el tamaño en bruto de una entidad. Su propósito es realizar unas pruebas de colisiones de físicas Q(en) ligeras(en) en la entidad visible.

Como se muestra en la gráfica, la caja delimitadora está comprendida entre dos puntos basados en coordenadas: «mínimos» y «máximos». Ambos representan los puntos de origen de la caja delimitadora, donde los mínimos son siempre negativos y los máximos siempre positivos. Como curiosidad, la suma de los mínimos y máximos da como resultado el tamaño de la caja delimitadora.

Las cajas delimitadoras se pueden usar con:

  • Detección de colisión de físicas Q(en) (principalmente jugadores y PNJ).
  • Detección de colisión de prerrequisitos de caja de colisión(en).
  • Pruebas de línea de visión.
  • Visleaves(en) ocupadas por entidades.

Si una caja delimitadora debe modificarse manualmente, se puede usar con:

  • Los modeladores usan el comando QC $bbox.
  • Los mapeadores usan las claves mins y maxs, si solid es 2.
  • Los programadores usan las funciones UTIL_SetSize()(en) o CBaseEntity::SetSize().
Note.pngNota:Las partes de la entidad que salen de la caja delimitadora no pasarán las pruebas de colisión de físicas Q. Incluyendo las cajas de colisión.

Rotación

Las cajas delimitadoras siempre están alineadas con los ejes y nunca rotan. Esto es lógico, porque se usan también para la detección de colisiones de los jugadores: sería imposible girar en un pasillo estrecho en el que las cuatro esquinas de la caja delimitadora toquen si esta rotase con el jugador. Las cajas alineadas con los ejes, además, son más ligeras de computar.

A pesar de no ser un gran problema para objetos cuadrados, se complica a la hora de manejar dimensiones sin cambiar a físicas V(en). Cuando las físicas V no son una opción, no hay mucho más que hacer: un jugador de Day of Defeat: Source(en) que haga un cuerpo a tierra puede girar en 360º, ya que Valve acomodó una caja delimitadora que mantiene la cabeza y los pies todo el rato en la misma posición.

Alineación con objetos

Las cajas delimitadoras rotan con la entidad. Estas están vinculadas a las físicas V(en).

Términos industriales

Source y su comunidad no hace uso de los términos industriales de las cajas delimitadoras, sin embargo a la hora de desarrollar se pueden encontrar estos términos para las cajas: AABB y OBB, o Axis-Aligned Bounding Box and Oriented Bounding Box.

Una AABB tiene un volumen 3D relativo al origen o es una caja sin rotar. Su nombre se debe a que todos sus lados son paralelos a los ejes asignados. Una OBB es una caja rotada, siendo un volumen 3D relativo a ángulo y origen dados.

Depuración

npc_metropolice(en) con ent_bbox.

Las cajas delimitadoras son también parte de la depuración; no solo son visibles con herramientas de visualización, sino también con otras aplicadas al trabajo de las cajas.

Comandos de consola para cajas delimitadoras:

  • ent_bbox: Visualiza la caja delimitadora de una entidad, la que mires, su nombre y clase.
  • ent_absbox: Visualiza entidades AABB, al mirar, su nombre y clase.
  • picker: Para la entidad de tu mira, visualizas la caja delimitadora y otros detalles.

Funciones de programación relacionadas:

  • UTIL_EntitiesInBox: Encuentra todas las entidades con la caja delimitadora dada.
  • NDebugOverlay::Box: Traza una caja con los mínimos y máximos otorgados. En Squirrel/Lua, la función DebugDrawBox() puede estar disponible.

Véase tambien

General

Recursos