Construye una Biblioteca de Activos

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.


Ensamblar una biblioteca de recursos es el proceso de importar y configurar una colección de recursos en una ubicación central dentro de su experiencia para un acceso fácil y de reutilización. Este proceso puede ahorrarle mucho tiempo a medida que se prepara para construir su entorno, ambiente, especialmente si configura los valores de cada recurso para mejorar el rendimiento y optimizar el uso de memoria en dispositivos de gama media a baja.

Usando el Environment Art - Assembling.rbxl archivo como referencia, esta sección del programa de arte ambiental muestra cómo agrupar una biblioteca de recursos de tu claro de recursos, incluyendo instrucciones paso a paso sobre:

  • Crear materiales personalizados para tu terreno a partir de tus texturas de azulejo.
  • Crear objetos de Superficie para su hoja de afeitar, y aplicarlos a mallas desenvueltas en tu biblioteca de activos.
  • Establecer parámetros de renderizado para sus activos para garantizar un rendimiento óptimo en todos los dispositivos.
  • Convierte tus activos en paquetes para que puedas actualizarlos y reutilizarlos en todos tus proyectos.

Después de completar esta sección, aprenderás a utilizar tu biblioteca de recursos de forma creativa para reemplazar o convertir el entorno, ambientede la caja gris, y agregar toques finales que mejoren el espacio 3D total.

The sample laser tag experience's modular and prop kit.

Crear materiales personalizados

Studio representa materiales personalizados como MaterialVariant objetos dentro del MaterialService . Estos objetos de MaterialVariant tienen cuatro propiedades que combinan las cuatro mapas de textura posibles para crear un material personalizado de alta calidad con propiedades físicas:

Después de que proporcione los mapas de textura a estas propiedades, puede aplicar su nuevo material personalizado a ambas partes, mallas y terreno. Puede usar o modificar los archivos de textura de muestra .png para crear el Lumpy Moss, Flowering Lumpy Moss, Lumpy Moss con Stones y Stones personalizados dentro del entorno, ambientede tutorialfinal, o puede usar su propio que diseñó en la sección

Para crear MaterialVariant objetos para tus texturas de azulejo:

  1. En la Inicio o Modelo pestaña de la barra de menú, haz clic en el botón Gerente de Materiales . La ventana 1> Gerente de Materiales1> se abre.

  2. En la lista de Materiales , seleccione el material de base que más se alinee con su textura de azulejo. Por ejemplo, si estaba creando un objeto de MaterialVariant para la textura de azulejo Lumpy Moss, elija el material de suelo predeterminado para que el material heredará sus propiedades físicas.

  3. En la barra de herramientas , haz clic en el ícono . Se muestra un nuevo MaterialVariant con un icono en la esquina inferior derecha que indica que es un material personalizado.

    New MaterialVariant tile in Material Manager with icon to indicate a custom material
  4. En el Inspector, navega a la sección General y luego renombra el material para alinearlo con el nombre de tu textura escalable.

    The Inspector view with the name of the material highlighted.
  5. En la sección Mapas de textura a la derecha de Color , haz clic en el botón Importar . Se muestra un explorador de archivos.

    The Texture Maps section of the Inspector view with the Import button highlighted.
  6. En el navegador de archivos, seleccione el mapa de textura Albedo .png para la textura correspondiente, luego el botón Abrir . El navegador de archivos se cierra y se muestra el nuevo mapa de colores con su ID de activo.

  7. Repita este proceso para las Metaliness, Normal y Roughness mapas de textura. La personalización de materiales para reflejar las mapas de textura.

    All texture maps for the Moss_Lumpy_A material.
     sphere part with the Moss_Lumpy_A material applied.
  8. En la sección Superiones , habilita el botón Establecer como superficie para asegurarte de que cuando apliques el suelo a tu terreno, Studio usa este material personalizado.

    The Set as Override toggle enabled.
  9. (Opcional) Si estás creando un material personalizado que representa un material orgánico,

    1. En la sección Azulejos, haz clic en el menú desplegable Patrón.
    2. Seleccione Orgánico para aleatorizar la salida y reducir el tamaño de los azulejos visibles.
    The Tiling section of the Inspector view with its settings.
  10. Repita este proceso para cada textura de ficha que desea incluir en su experiencia.

Crear paquetes de apariencia de superficie

Studio utiliza hojas de corte dentro de SurfaceAppearance objetos que puedes padre para MeshParts que contienen datos de UV. Como con los materiales personalizados, SurfaceAppearance objetos tienen cuatro propiedades que combinan las cuatro hojas de textura de corte para crear una superficie de tratamiento de imágenes 3D de alta calidad:

SurfaceAppearance.ColorMap – Representa el mapa de textura albedo. SurfaceAppearance.MetalnessMap – Representa el mapa de textura metálica. SurfaceAppearance.NormalMap – Representa el mapa de textura normal. 0> Class.Surface Spencer.RoughnessMap0> – Representa el mapa de textura áspera.

Después de proporcionar los mapas de textura a estas propiedades, puede hacer que el objeto SurfaceAppearance sea un

Puede usar o modificar los archivos de textura de muestra .png para crear un objeto de SurfaceAppearance que respete los datos uv para las muestras modulares y propiedades dentro del láser de etiqueta de muestra final, o puede usar su propio que diseñó en la sección anterior del tutorial que se aplica a sus propias propiedades modulares y propiedades.

Para crear paquetes SurfaceAppearance que puedes hijos a tu kit modular y propiedades:

  1. Inserta un objeto Superficie en el espacio de trabajo.

  2. Seleccione el objeto Superficie y luego en la ventana Propiedades seleccione la propiedad ColorMap . Se muestra un pop-up.

  3. Haga clic en el botón Añadir imagen... . Se muestra un explorador de archivos.

    The ColorMap pop-up with the Add Image button highlighted.
  4. Seleccione el mapa de textura Albedo para la textura correspondiente, luego el botón Abrir . El navegador de archivos se cierra y la propiedad ColorMap se actualiza con un nuevo ID.

  5. Repita este proceso para las propiedades MetalnessMap , NormalMap y RoughnessMap , seleccionando sus respectivos mapas de textura desde el navegador de archivos.

  6. En la ventana Explorador , haz clic con el botón derecho en el objeto Superficie , luego selecciona Combinar en el paquete e del menú contextual. La 1> ventana de diálogo4> Combinar en el paquete 4> se muestra.

  7. Llena los campos Título y Descripción , establece la propiedad en ti o en un grupo, luego haz clic en el botón Enviar . Una vez completado, un símbolo de enlace de cadena se muestra sobre el icono de la objetopara identificarlo como un paquete.

    The Surface Appearance icon with a chain link symbol.
  8. (Opcional) Seleccione el objeto Nombre de superficie y luego en la ventana Propiedades , habilite 0>Actualización automática0> para actualizar automáticamente el paquete si realiza cualquier modificación en el objeto 3>Nombre de superficie 3>.

Importar Modular Assets y Props

Studio representa los activos y propiedades modulares que importa como Model objetos con hijo

Usa el 3D Importer, puedes importar el kit modular de muelles y propiedades en Studio para usar en tu biblioteca de activos, o puedes importar cualquier activo que hayas diseñado en la sección anterior del tutorial. Para más información sobre la funcionalidad de este herramienta, see 3D Importer .

Para importar tus activos y propiedades modulares en la experiencia:

  1. En la Inicio o Avatar pestaña, haz clic en el botón Importar 3D . Se muestra un explorador de archivos.

    Studio's Avatar tab with the 3D Importer highlighted.
  2. Seleccione un archivo .fbx para cualquier activo o pieza decorativa.

  3. Verifique la vista previa del objeto y asegúrese de que las configuraciones de importación son correctas para su objeto.

  4. Verifique cualquier mensaje de advertencia o error .

  5. Haga clic en Importar . La figura se muestra en la ventana Explorador y en la ventana de vista.

  6. Repita este proceso para cada activo y pieza decorativa.

  7. Mueva todos sus activos en una área de su experiencia cerca de su geometría de caja gris. Esta zona es su biblioteca de activos.

Aplicar datos de la superficie

Cuando realiza el proceso de desempaqueta los UV de una máscara en el software de modelado de terceros, el software almacena los datos de los UV dentro del archivo .fbx o .obj de la malla. Cuando importa esa máscara en Studio, el resultado del objeto

Para aplicar los datos de la capa de textura SurfaceAppearance a los mash-meshes desenvueltos en tu biblioteca de activos:

  1. En la ventana Explorer, haz clic en tu paquete Superficie, luego presiona Ctrl 1> D 1> ( 4> ⌘ 4> 7> D7> ) para duplicarlo.
  2. Hijos del paquete duplicado Superficie para aplicar sus datos de UV a los mapas de textura y mostrar su tratamiento visual.
  3. Repita este proceso para cada activo y pieza decorativa.

Establecer parámetros de física y renderizado

Ahora que tienes tus recursos dentro de Studio, es importante establecer parámetros de física y renderizado que permitan que los recursos mantengan la máxima calidad visual posible en dispositivos con limitaciones de memoria yGPU. En general, cuanto más estrictamente sigas las recomendaciones en esta sección, más rentable harás tu experiencia. Sin embargo, es importante considerar cuidadosamente el contexto en el que planeas colocar cada recurso en el entorno general para asegurarte de mantener tus objet

Anclado

La propiedad BasePart.Anchored determina si el sistema de física de Roblox afecta la posición del objeto. Cuando habilitas esta propiedad para un Part o un MeshPart, el objeto se elimina de las cálculas físicas de la simulación dinámica que siempre se ejecuta en la experiencia, lo que significa que el obj

Los objetos que no simulan una respuesta física son más baratos de renderizar porque no ocupan elGPU que es necesario para esos cálculos físicos. Cuando liberas elGPU, mejores el rendimiento para tu experiencia, especialmente en dispositivos más antiguos que necesitan guardar elGPU para un juego rápido. Es por esta razón que cada objeto aparte de las puertas en el etiqueta de láser final es anclado.

Puede colisionar

La propiedad BasePart.CanCollide determina si el objeto puede interactuar físicamente con otros objetos. Cuando habilitas esta propiedad para un Part o MeshPart, el objeto es impenetrable, y el motor de Roblox lo considera en los cálculos de física. Estos cálculos pueden afectar el rendimiento de tu experiencia cuando hay muchos

Para aliviar parte de este impacto en el ejecución, desactivar esta propiedad para los objetos con los que el usuario nunca interactuará. Por ejemplo, el entorno de etiqueta de láser final desactiva esta propiedad para todo el follaje.

Puede tocar

La propiedad BasePart.CanTouch determina si Touched y TouchEnded eventos se disparan en el objeto. Cuando habilitas esta propiedad para un 1> Class.Part1>

Este proceso ocurre para cada marco, lo que puede tomar una cantidad significativa de memoria si el motor necesita ver el estado del evento de toque para muchos objetos a la vez. Para mitigar parte de este impacto en la memoria, solo habilita esta propiedad para los objetos que deben desencadenar un evento.

Puede consultar

La propiedad BasePart.CanQuery determina si el motor de Roblox considera el objeto durante las operaciones de consulta espacial, como el intersección rayo-superficie, emisión de rayos. Studio habilita esta propiedad para cada Part o MeshPart por defecto, lo que significa que el motor de Roblox verifica para ver si cada objeto necesita llam

Por esta razón, se recomienda desactivar esta propiedad para los objetos que el motor de Roblox no necesita considerar para las operaciones de consulta espacial. Cuando se toman decisiones sobre dónde desactivar esta propiedad, considere cómo cada propiedad afecta el rendimiento del juego. Por ejemplo, el entorno de etiqueta de láser final mantiene esta propiedad habilitada para cada pared en el edificio porque

Sombra de Cast

La propiedad BasePart.CastShadow determina si el objeto proyecta una sombra. Cuando habilitas esta propiedad para un objeto Part o MeshPart, el motor de Roblox calcula cada ubicación de vértice del objeto en tiempo de ejecución, luego dibuja un raycast desde el sol hacia cualquiera de sus objetos vecinos hasta que colisiona con otro objeto para crear

Estas cálculos pueden costar un rendimiento, especialmente cuando tienes muchos objetos de complejidad geométrica. Esto se debe a que los objetos con complejidad geométrica tienen más polígonos que los objetos que son geométricamente simples, lo que significa que tienen más vértices que el motor necesita para calcular la sombra del objeto. Cuantos menos polígonos tenga un objeto, más rápido se hace la operación y más barato es su sombra.

A wall section with few polygons, and a plant with many polygons casting shadows on a white wall.

Las sombras pueden proporcionar una gran sensación de realismo a los objetos con profundidad geométrica 3D, por lo que cuando estés decidiendo dónde desactivar esta propiedad, considera dónde los objetos proporcionan una mejora visual significativa al entorno, ambiente, y dónde los usuarios notarán la falta de sombras. Por ejemplo, las sombras complejas de la follaje pueden proporcionar una gran sensación de in

Foliage casting shadows.
BasePart.CastShadow = Habilitado)
Foliage not casting shadows.
BasePart.CastShadow = Deshabilitado

Doble

La propiedad MeshPart.DoubleSided determina si renderizar ambas caras o polígonos en el malla. Cuando habilitas esta propiedad para un MeshPart planoar, como hojas, cabello o tarjetas de tela, el motor de Roblox render

A tree with all planar meshes facing the camera.
MeshPart.DoubleSided = Habilitado)
A tree with less leaves because all planar meshes facing away from the camera are disabled.
MeshPart.DoubleSided = Deshabilitado)

Esta propiedad es útil para agregar realismo a su entorno, ambiente, pero viene con un costo de rendimiento porque el motor necesita renderizar los polígonos del objeto dos veces: una para la dirección que se enfrenta a la cámara del usuario y otra para cualquier malla que se enfrente lejos de la cámara del usuario. Para aliviar parte de este impacto en el ejecución, el entorno de propiedad de etiqueta de láser final solo permite esta propiedad para el follaje porque

Fidelidad de colisión

La propiedad MeshPart.CollisionFidelity determina con qué rapidez la caja de golpes de una máscara o unión se ajusta a su representación visual. Por defecto, esta configuración renderiza una caja de golpes que es aproximadamente la misma que la forma geométrica de la malla, lo que significa que donde los usuarios colisionan con el objeto es similar a la geometría actual de la máscara. Por

A grey castle mesh.
Malla original
The same castle mesh with a colorful hitbox that shows where users can collide with the castle.
Por defecto

Puede establecer esta propiedad en un valor diferente para reducir la precisión de la caja de diálogo de un malla. Por ejemplo, cuando establece esta propiedad en Hull, el motor de Roblox reduce significativamente los vértices de la caja de diálogo de la malla, y cuando establece esta propiedad

The same castle mesh with cube hitbox that shows where users can collide with the castle.
Caja
The same castle mesh with a cylindrical hitbox that shows where users can collide with the castle.
Casco
The same castle mesh with a colorful hitbox that shows where users can collide with the castle. This version shows more colorful faces than the default hitbox.
PreciseConvexDecomposition

Al igual que BasePart.CastShadow , cuantos más vértices necesita que el motor de Roblox renderice, mayor es el costo del rendimiento. Por esta razón, es importante considerar cómo desea que los usuarios interactúen con cada malla para ver si puede reducir la cantidad de vértices que el motor necesita renderizar para la caja de hitbox del malla. En casos en los que no

Para demostrar este concepto, referencia las siguientes imágenes que muestran la caja de golpes de cada malla del modelo de pared que proporciona un aumento de altura entre el primer y el segundo piso del final de la entorno, ambientede láser de muelles. La caja de golpes predeterminada para la pared principal tiene mucha geometría innecesaria cuando solo necesita proporcionar una superficie para evitar que el usuario se mueva

A wall model that provides a rise in elevation.
Malla original
The same wall model with a colorful hitbox that shows where users can collide with the wall.
Por defecto
The same wall model with a colorful hitbox for the trim, but only a box hitbox for the wall mesh.
Caja

A medida que tomas estas decisiones, es importante considerar cómo cambiar el valor predeterminado puede afectar negativamente a los usuarios a medida que navegan por tu entorno, ambiente. Por ejemplo, si estableces el propietario en Caja para los mallas de carga de la pared, los usuarios colisionarían con la caja de diálogo si tratan de saltar cerca de la pared. En cambio

A wall model with a box hitbox for the top trip. Because the box sticks out, users can unintentionally collide with the top trim.
Caja
The same wall model with a hull hitbox for the top trip. Because hull hitbox conforms much closer to the top of the model, allowing users to avoid colliding with the trim.
Casco

Tenga en cuenta que puede ser importante tener una hitbox que se ajusta con precisión a la forma de su malla, especialmente cuando necesita controlar exactamente cómo los usuarios se colisionan con su forma. Por ejemplo, en el entorno, ambientede etiqueta de láser final, es importante que los usuarios solo colisionen con las esquinas de la puerta y no con la puerta en sí misma, de lo contrario, nunca podrían entrar o salir de un bolsillo de combate.

A doorway model with optimized hitbox meshes.

RenderFidelidad

La propiedad MeshPart.RenderFidelity determina el nivel de detalle que se muestra al usuario. Cuando estableces esta propiedad en Enum.RenderFidelity.Automatic, el motor de Roblox reduce la fidelidad del rendimiento del malla cuanto más el usuario está de la malla, y cuando estableces esta propiedad en

Cuantos más objetos el motor debe renderizar con precisión al usuario desde cualquier distancia, especialmente si tiene una gran cantidad de vértices, el costo de rendimiento es más alto. Para mitigar parte de este impacto en el ejecución, establece esta propiedad en Enum.RenderFidelity.Performance para los objetos con complejidad geométrica, como la follaje en la biblioteca de im

Convertir Activos en Paquetes

Ahora que todas sus fuentes de modular están en Studio con parámetros de renderizado que se configuran para conservar su alta calidad visual para todos los usuarios, es hora de convertirlas en paquetes. Es importante convertir sus fuentes en paquetes porque te permite reutilizarlas repetidamente en tu experiencia actual y otros proyectos. Además, puedes editar fácilmente un paquete que se carga instantáneamente para todas sus instancias, ahorrándote mucho tiempo en el proceso de

Debido a que sus objetos SurfaceAppearance son ya paquetes, cuando convierte sus objetos Model en paquetes, se convierten en paquetes anidados. Los paquetes anidados te permiten mantener jerarquías complejas de objetos hijos que puedes modificar sin importar el paquete de objetos Model. Esto te permite mayor control sobre los componentes individuales de tus activos.

Para convertir tus activos y propiedades modulares en paquetes:

  1. En la ventana Explorador , haz clic con el botón derecho en un activo modular o un pieza decorativa, luego selecciona convertir en paquete del menú contextual. La ventana convertir en paquete se muestra.

  2. Llena los campos Título y Descripción , establece la propiedad en ti o en un grupo, luego haz clic en el botón Enviar . Una vez completado, un símbolo de enlace de cadena aparecerá sobre el icono del aplicación de modeladopara identificarlo como un paquete.

    The Model icon with a chain link symbol.
  3. Repita este proceso para cada activo y pieza decorativa.

Una vez que esté satisfecho con el diseño general de su biblioteca de recursos, puede seguir adelante y decorar el entorno con sus nuevos recursos pulidos, y configurar elementos adicionales del espacio 3D para llevar su mundo a la vida.