Preguntas Frecuentes (FAQ) 💡
Last updated
Last updated
Needle Engine 4.x
Ve a Project Settings/Needle y haz clic en el botón de inicio de sesión. Sigue los pasos e inicia sesión en tu cuenta de Needle. Después verás la información de tu cuenta en la ventana de configuración del proyecto de Unity. Selecciona el equipo con licencia del desplegable.
Needle Engine 3.x
Abre Edit/Project Settings/Needle
para acceder a la configuración del plugin Needle Engine. En la parte superior de la ventana encontrarás campos para introducir la información de tu licencia.
Email
- Introduce el email con el que compraste la licencia
Invoice ID
- Introduce uno de los ids de factura que recibiste por email
Nota: Es posible que necesites reiniciar el servidor web local para aplicar la licencia.
Abre Addon Preferences/Needle Engine
para acceder a la configuración del addon Needle Engine
Email
- Introduce el email con el que compraste la licencia
Invoice ID
- Introduce uno de los ids de factura que recibiste por email
Nota: Es posible que necesites reiniciar el servidor web local para aplicar la licencia.
Es posible que veas una advertencia en tu navegador sobre la seguridad SSL dependiendo de tu configuración local.
Esto se debe a que, si bien la conexión está encriptada, por defecto no hay un certificado SSL que el navegador pueda validar.
Si eso ocurre: haz clic en Advanced
y luego en Proceed to Site
. En Safari, es posible que necesites actualizar la página después, ya que no procede automáticamente. ¡Ahora deberías ver tu escena en el navegador!
El diálogo solo debería aparecer una vez para el mismo servidor local.
::: tip Las conexiones están seguras porque forzamos HTTPS para asegurar que WebXR y otras APIs web modernas funcionen de inmediato. Algunos navegadores seguirán quejándose de que la conexión SSL (entre tu servidor de desarrollo local y el sitio web local) no se puede confiar automáticamente, y que necesitas verificar manualmente que confías en esa página. La recarga automática de página y las conexiones Websocket también pueden verse afectadas dependiendo del navegador y la configuración del sistema.
Si eso ocurre, suele haber una excepción en el código del motor o en tu código. Abre las herramientas de desarrollo (Ctrl + Shift + I o F12 en Chrome) y revisa la Consola en busca de errores. En algunos casos, especialmente cuando acabas de actualizar la versión del paquete Needle Engine, esto se puede solucionar deteniendo y reiniciando el servidor de desarrollo local. Para ello, haz clic en la barra de progreso en ejecución en la esquina inferior derecha del Editor, y haz clic en la pequeña X para cancelar la tarea en ejecución. Luego, simplemente vuelve a pulsar Play.
Esto suele ocurrir cuando estás usando shaders o materiales personalizados y sus propiedades no se traducen limpiamente a nombres de propiedad conocidos para la exportación glTF. Puedes asegurarte de estar usando materiales y shaders compatibles con glTF, o marcar los shaders como "personalizados" para exportarlos directamente.
Lee más sobre flujos de trabajo glTF recomendados:
Lee más sobre shaders personalizados:
Si estás utilizando vite o next.js, asegúrate de añadir los plugins de Needle Engine a tu configuración. Ejemplo para vite:
Ejemplo para next.js
También puedes declarar las variables faltantes, por ejemplo, en tu index.html
raíz en una etiqueta script como esta:
Por favor, asegúrate de que la codificación de Lightmap (Lightmap Encoding) esté configurada en Normal Quality. Ve a Edit/Project Settings/Player para cambiar la configuración.
Esto puede tener muchas razones, pero algunas comunes son:
demasiadas texturas o texturas demasiado grandes
los meshes tienen demasiados vértices
los meshes tienen atributos de vértice que realmente no necesitas (por ejemplo, tienen normales y tangentes pero no las estás usando)
los objetos están deshabilitados y no ignorados – los objetos deshabilitados también se exportan por si quieres activarlos en tiempo de ejecución. Establece su Etiqueta a EditorOnly
para ignorarlos completamente para la exportación.
tienes múltiples componentes GltfObject
en tu escena y todos tienen EmbedSkybox
habilitado (solo necesitas tener el skybox una vez por escena que exportas)
Para Unity: Asegúrate de usar el componente UI/Legacy/Text
y no el componente TextMeshPro - Text
Tu código C# existente no se exportará tal cual, tienes que escribir el typescript / javascript correspondiente para él.
Needle usa typescript / javascript para los componentes y genera stubs C# para ellos.
Los componentes que ya tienen JS correspondiente lo mostrarán en el Inspector.
Asegúrate de que tus luces estén configuradas en "Baked" o "Realtime". "Mixed" no es compatible actualmente.
Las luces configuradas en mixed (con lightmapping) afectan a los objetos dos veces en three.js, ya que actualmente no hay forma de excluir objetos con lightmap de la iluminación.
La intensidad de la sombra de la luz no se puede cambiar actualmente debido a una limitación de three.js.
Si usas un cubemap personalizado: Puedes anular la configuración de importación de textura de la textura del skybox (asignada a tu cubemap).
Si usas el skybox por defecto: Añade un componente SkyboxExportSettings
en cualquier parte de tu escena para anular la resolución por defecto.
Por favor, comprueba los siguientes puntos:
Tu luz tiene sombras habilitadas (Soft Shadow o Hard Shadow).
Tus objetos están configurados en "Cast Shadows: On" (consulta el componente MeshRenderer).
Para las luces direccionales, la posición de la luz es actualmente importante ya que la cámara de sombra se colocará donde se encuentra la luz en la escena.
Asegúrate de que tu proyecto esté configurado en espacio de color Linear colorspace.
Desplegar en Glitch es una forma rápida de prototipar e incluso puede funcionar para algunas producciones pequeñas. El pequeño servidor allí no tiene la potencia ni el ancho de banda para albergar a mucha gente en una sesión persistente.
Asegúrate de añadir el componente WebXR
en algún lugar dentro de tu GltfObject
raíz.
Opcionalmente añade un componente AR Session Root
en tu GltfObject
raíz o dentro de la jerarquía de hijos para especificar la ubicación, escala y orientación para WebXR.
Opcionalmente añade un componente XR Rig
para controlar dónde empiezan los usuarios en VR.
Al crear nuevos scripts en npmdefs en sub-escenas (es decir, una escena que se exporta como referencia desde un script en tu escena de exportación raíz), actualmente tienes que volver a exportar la escena raíz de nuevo. Esto se debe a que el code-gen responsable de registrar nuevos scripts actualmente solo se ejecuta para escenas con un componente ExportInfo
. Esto se solucionará en el futuro.
La razón más probable es una instalación incorrecta.
Comprueba la consola y el componente ExportInfo
en busca de errores o advertencias.
Si estas advertencias/errores no ayudaron, prueba los siguientes pasos en orden. Dales algo de tiempo para completarse. Detente una vez que tu problema se haya resuelto. Comprueba la consola en busca de advertencias y errores.
Instala tu proyecto seleccionando tu componente ExportInfo
y haciendo clic en Install
.
Ejecuta una instalación limpia seleccionando tu componente ExportInfo
, manteniendo pulsado Alt y haciendo clic en Clean Install
.
Intenta abrir el directorio de tu proyecto web en una herramienta de línea de comandos y sigue estos pasos:
ejecuta npm install
y luego npm run dev-host
Asegúrate de que tanto el paquete de tiempo de ejecución local (node_modules/@needle-tools/engine
) como three.js (node_modules/three
) se hayan instalado.
Puedes ejecutar npm install
también en ambos directorios.
Aunque la generación de componentes C# técnicamente funciona también con javascript plano, no lo recomendamos y no lo soportamos completamente, ya que para el generador es más una suposición o simplemente imposible saber qué tipo C# crear para tu clase javascript. Abajo encontrarás un ejemplo mínimo sobre cómo generar un Componente de Unity desde javascript si realmente quieres hacerlo.
En Windows: Asegúrate de haber añadido toktx a las variables de entorno de tu sistema. Es posible que necesites reiniciar tu ordenador después de añadirlo para actualizar las variables de entorno. La ubicación de instalación por defecto es C:\Program Files\KTX-Software\bin
.
Asegúrate de no crear un proyecto en una unidad formateada como exFAT porque exFAT no soporta symlinks, lo cual es requerido para Needle Engine para Unity antes de la versión 3.x. Puedes comprobar el formato de tus unidades siguiendo estos pasos:
Abre "System Information" (Información del Sistema) (con la tecla de Windows y escribiendo eso o introduciendo "msinfo32" en cmd).
Selecciona Componentes > Almacenamiento > Unidades.
Selecciona todo (Ctrl + A) en el lado derecho de la pantalla, copia eso (Ctrl + C) y pégalo aquí (Ctrl + V).
Asegúrate de que tu proyecto esté en un disco que se sepa que funciona con node.js. La razón principal de los fallos es que el disco no soporta symlinks (enlaces simbólicos / softlinks), lo cual es un requisito para el correcto funcionamiento de node.js. El formato NTFS siempre debería funcionar. Los formatos de sistema de archivos problemáticos conocidos son exFAT y FAT32.
Para comprobar el formato de tus unidades, puedes:
Abrir "System Information" (Información del Sistema) (con la tecla Windows y escribiendo "System Information" o introduciendo msinfo32
en cmd Windows + R).
Seleccionar "Components > Storage > Drives" (Componentes > Almacenamiento > Unidades).
Ahí, puedes ver todas las unidades y su formato listado. Pon tus proyectos en una unidad con formato NTFS.
@
. Expected identifier, string literal, numeric literal or ..."Needle Engine usa decoradores de typescript para la serialización.
Para solucionar este error, asegúrate de habilitar experimentalDecorators
en tu tsconfig.json.
Es probable que estés usando una versión x86_64 de Unity en un procesador (ARM) Apple Silicon. Unity 2020.3 solo está disponible para x86_64, las versiones posteriores también tienen versiones para Apple Silicon. Nuestra integración de Unity llamando a npm lo hará desde un proceso x86_64, resultando en que se use la versión x86_64 de node y vite/esbuild. Cuando después intentes ejecutar comandos npm en el mismo proyecto desde una aplicación Apple Silicon (por ejemplo, VS Code), npm se quejará de arquitecturas incompatibles con un largo mensaje de error.
Para solucionar esto, usa una versión de Unity para Apple Silicon (2021.1 o posterior).
También puedes solucionarlo temporalmente en 2020.3 eliminando la carpeta node_modules
y ejecutando npm install
de nuevo desde VS Code. Tendrás que eliminar node_modules
de nuevo cuando vuelvas a Unity.
Esto puede ocurrir cuando tienes, por ejemplo, un SceneSwitcher
(o cualquier otro componente que cargue una escena o asset) y el Asset referenciado en Unity contiene un GltfObject
que tiene el mismo nombre que tu escena original con el SceneSwitcher
. Puedes verificar esto en Unity si recibes un error que diga algo como:
Para solucionar esto puedes:
Eliminar el GltfObject
en el Prefab o Escena referenciado.
Renombrar el GameObject con el componente que carga las escenas referenciadas.
Dispositivos conocidos que causan problemas:
Lenovo Thinkpad - T495
Si quieres (o tienes que) ejecutar tu IA localmente, puedes usar los archivos Needle llms.txt como contexto para tu IA local (por ejemplo, Ollama):
Página traducida automáticamente usando IA
Consulta la para obtener información sobre cómo configurar un certificado autofirmado para una experiencia de desarrollo más fluida. :::
Si el tiempo de carga en sí es un problema, puedes intentar dividir tu contenido en múltiples archivos glb y cargarlos bajo demanda (esto es lo que hacemos en nuestro sitio web). Para que funcione, puedes poner tu contenido en Prefabs o Scenes y referenciarlos desde cualquiera de tus scripts. Por favor, consulta .
Asegúrate de seguir las y lee sobre
El factor Intensity Multiplier
para Skybox en Lighting/Environment
no es compatible actualmente y no tiene efecto en Needle Engine.
Consulta también la documentación sobre .
Estamos trabajando en otras ideas de networking, pero mientras tanto puedes alojar el sitio web en otro lugar (con soporte node.js) o simplemente remezclarlo para distribuir la carga entre varios servidores. También puedes alojar el en otro lugar donde pueda escalar, por ejemplo, Google Cloud.
Asegúrate de seguir los .
Por favor, comprueba que no estás accidentalmente en el modo Debug
del Inspector – vuelve a Normal
:
Asegúrate de .
Si esto no soluciona el problema, por favor, pregunta .
Consulta la sección .
Usa un detector para determinar si tu dispositivo soporta WebGL 2, también sugiere cuál podría ser la causa de tu problema, pero generalmente asegúrate de haber actualizado tu navegador y drivers. WebGL 1 no es compatible.