nperi / n.imp Goto Github PK
View Code? Open in Web Editor NEWThis project forked from laboratoriodemedios/n.imp
NIMP
This project forked from laboratoriodemedios/n.imp
NIMP
Estaba haciendo un proyecto de prueba y noté que no puedo agrandar o achicar nodos.
Va video.
NIMP_GUIExpandNodeH264-2.mov.zip
No encontré ninguna opción para des-seleccionar un parámetro que ya está reaccionando a audio.
Tal vez una buena opción sería listar los parámetros que responden a audio dentro del nodo del audio con posibilidad de eliminarlos.
Me ha pasado varias veces que un nodo me queda demasiado grande o demasiado pequeño y desaparece de la interfaz.
Habría que poner un límite al scale que puede hacer el usuario al arrastrar un vértice del nodo.
El hacer scale de nodos noto que el tamaño del nodo no sigue el puntero.
En cambio, crece mucho más rápido de lo que el puntero se mueve.
Recomiendo que vean el código de ofxComposer para ver cómo mueve los nodos siempre siguiendo el puntero del mouse sin importar el zoom.
Va video.
NIMP_GUISensibilidadScaleNodos.mov.zip
En la versión anterior de NIMP había un tipo de nodo llamado ImageInputList (ImageInputList.h y .cpp).
Si bien en un principio se había implementado un nodo exclusivo para video (el VideoPlayerMac), éste se dejó de usar porque usaba un player por nodo y generaba un consumo excesivo de CPU.
Entonces, para controlar mejor la cantidad de players simultáneos, se creó la entidad VideoPool. VideoPool es un pool de videoplayers a donde los nodos de NIMP solicitan una instacia de un playe cuando lo necesitan.
El nodo ImageInputList sustituyó a VideoPlayerMac porque además de reproducir imágenes (una lista de imágenes) puede también reproducir video.
Si se fijan n el código el nodo ImageInputList soporta reproducir ImageTypes, y entre los ImageTypes está ImageTypeMovie (que termina siendo una imagen).
El nodo ImageInputList soporta reproducir una lista de ImageTypes, qu pueden ser fotos o videos.
Es importante que se use ese nodo y no el VideoPlayerMac, por lo tanto propongo que eliminen el nodo video actual, y dejen sólo el imageinputlist (tal vez cambiándole el nombre a Image and Video en la GUI).
La GUI del nodo ImageInputList tendría que soportar que el usuario cree la lista de elementos a reproducir, y que la pueda editar.
Sería útil poder utilizar las teclas UP y DOWN durante la creación de un nodo.
Cuando estoy creando un nodo siempre apreto N y las primeras letras del nodo, luego instintivamente Down para ir a seleccionarlo.
Esto lo comprobé con los nodos de audio, peor puede extrapolarse a cualquier nodo de control donde la interfaz permita seleccionar los parametros que se desea controlar.
Lo que sucede es que si creo dos nodos de audio puedo editar los parámetros que controlan ambos al mismo tiempo (prendiendo el Edit de ambos nodos).
Esto no debería permitirse, esto implica que si algún nodo está editando sus parámetros, los demás nodos no deben dejar establecer su edición.
Para reproducir:
El parámetro Sound Saturation tiene unn par comportamientos extraños:
1- Ví que a medida que aumento el parámetro se apaga la onda. Esto es contra intuitivo, porque el usuario esperaría que al aumentarlo la onda aumente.
2- No pude lograr que la onda se apagara completamente. Me refiero a hacerlo completamente insensible al audio. En el esquema actual, si pongo el nodo al máximo no debería ver que la onda se mueve (sin embargo, sería mejor contemplar lo que dice el punto 1 y hacer que la onda se apague cuando el parámetro está en cero).
Es muy probable que NIMP se use en un lugar con música o ruido muy altos.
Actualmente si uno está en un ambiente con mucho ruido, los nodos de audio de NIMP se saturan rápidamente.
En la implementación anterior, NIMP tenía un parámetro para reducir o aumentar en nivel de volumen de la entrada de audio.
Creo que es importante tener lo mismo en la interfaz. Esto podría ponerse en cada nodo.
Lo probé con un nodo de cámara.
1- Creo el nodo.
2- Abro su interfaz.
3- Cambio el nombre y presiono enter.
4- Cierro la interfaz.
El nombre del nodo en la GUI sigue siendo "New Camera"
Hoy me pasó que en un proyecto con 10 nodos me saturó la pantalla (no tenía más lugar ni con el zoom out al máximo).
Tal vez deberíamos considerar aumentar el tamaño de área útil un 50% más.
Creo que el nodo de la cámara debería permitir seleccionar de entre las cámaras reconocidas.
Por ejemplo los Blend y los Switches.
Habría que revisar por qué esto está así.
Este problema sigue ocurriendo.
Por lo que vi, pasa en todos los nodos, y se debe al zoom.
1- Crear un nodo cámara.
2- Apretar la opción "i" 2 veces para abrir y cerrar la interfaz y corroborar que el click reacciona OK.
3- Con la interfaz cerrada hacer zoom.
4- Intentar presionar nuevamente la opción "i"
Por lo que vi el comportamiento es el siguiente:
Cuando se está seleccionando la onda es difícil darse cuenta cómo reaccionan las diferentes bandas antes de que los parámetros empiecen a reaccionar.
Esto se soluciona mostrando la información de la banda en vez de la onda sin filtrar por FFT.
El error ocurrió al borrar un nodo de Glitch 1, y luego intentar unir un nodo Image Processor con un Simple Mix.
Subo stack trace.
#0 0x0086eadd in ofNode::getGlobalTransformMatrix() const at /Users/cclark/Documents/Devel/cpp/of_v0.8.4_osx_releaseNIMP/libs/openFrameworks/3d/ofNode.cpp:304
#1 0x0086eaf6 in ofNode::getGlobalTransformMatrix() const at /Users/cclark/Documents/Devel/cpp/of_v0.8.4_osx_releaseNIMP/libs/openFrameworks/3d/ofNode.cpp:304
#2 0x001a8856 in ofxTitleBar::_mousePressed(ofMouseEventArgs&) at /Users/cclark/Documents/Devel/cpp/of_v0.8.4_osx_releaseNIMP/addons/ofxComposer_nimp/src/ofxTitleBar.cpp:98
#3 0x001aa6c9 in ofDelegate<ofxTitleBar, ofMouseEventArgs, false>::notify(void const*, ofMouseEventArgs&) at /Users/cclark/Documents/Devel/cpp/of_v0.8.4_osx_releaseNIMP/apps/NIMPgit/farq2014/../../../libs/openFrameworks/events/ofDelegate.h:124
#4 0x0086bc34 in Poco::PriorityStrategy<ofMouseEventArgs, Poco::AbstractPriorityDelegate >::notify(void const*, ofMouseEventArgs&) [inlined] at /Users/cclark/Documents/Devel/cpp/of_v0.8.4_osx_releaseNIMP/libs/openFrameworksCompiled/project/osx/../../../../libs/poco/include/Poco/PriorityStrategy.h:81
#5 0x0086bc0a in Poco::AbstractEvent<ofMouseEventArgs, Poco::PriorityStrategy<ofMouseEventArgs, Poco::AbstractPriorityDelegate >, Poco::AbstractPriorityDelegate, Poco::FastMutex>::notify(void const*, ofMouseEventArgs&) at /Users/cclark/Documents/Devel/cpp/of_v0.8.4_osx_releaseNIMP/libs/openFrameworksCompiled/project/osx/../../../../libs/poco/include/Poco/AbstractEvent.h:241
#6 0x00867105 in void ofNotifyEvent<ofEvent, ofMouseEventArgs>(ofEvent&, ofMouseEventArgs&) at /Users/cclark/Documents/Devel/cpp/of_v0.8.4_osx_releaseNIMP/libs/openFrameworksCompiled/project/osx/../../../../libs/openFrameworks/events/ofEventUtils.h:172
#7 0x00866eb9 in ofNotifyMousePressed(int, int, int) at /Users/cclark/Documents/Devel/cpp/of_v0.8.4_osx_releaseNIMP/libs/openFrameworks/events/ofEvents.cpp:312
#8 0x001438a6 in ofxMultiGLFWWindow::mouse_cb(GLFWwindow*, int, int, int) at /Users/cclark/Documents/Devel/cpp/of_v0.8.4_osx_releaseNIMP/addons/ofxMultiGLFWWindow_nimp/src/ofxMultiGLFWWindow.cpp:1049
Si estoy en edit mode OFF (cuando no debería poder modificar nodos) sucede que puedo crear nodos, y que puedo modificar los nodos que creé.
Noté que la forma de incluir addons en NIMP a veces implica entrar al addon y modificarlo.
Veo que lo han hecho en casi todos los addons usados.
¿Por qué optaron por hacer esto y no por heredar de las clases que debían modificar?
Si se crea un nodo de audio y se comienza a editar los parámetros de otros nodos que controla, y luego con el "editar" prendido el usuario borra el nodo audio, se da una situación extraña en la que los parámetros que uno clickea siguen pintándose de amarillo (como si estuvieran siendo seleccionados para que sean controlados por el nodo audio que dejó de existir).
Un nodo origen puede estar conectado a muchos nodos destin, y actualmente las conexiones entre nodos sólo pueden borrarse todas juntas dando click en el pequeño círculo de salida o llegada de la conexión.
Eso hace que a veces cuando se quiere borrar una sola conexión uno termine borrando muchas que no desea borrar.
Habría que elegir otra dinámica de eliminación de conexiones, tal vez seleccionándolas o atravesándolas con el mouse a modo de "corte".
Lo que hice fue:
1- Arrastrar 2 videos :
NIMP_GUISensibilidadScaleNodos.mov y NIMP_GUIVideoPlayerDesapareceConSwitchH264.mov
Esto creó un nodo Image Video.
2- Hice click en la "i" de ese nuevo nodo.
Va stack trace:
#0 0x0087029d in ofNode::getGlobalTransformMatrix() const at /Users/cclark/Documents/Devel/cpp/of_v0.8.4_osx_releaseNIMP/libs/openFrameworks/3d/ofNode.cpp:304
#1 0x008702b6 in ofNode::getGlobalTransformMatrix() const at /Users/cclark/Documents/Devel/cpp/of_v0.8.4_osx_releaseNIMP/libs/openFrameworks/3d/ofNode.cpp:304
#2 0x008702b6 in ofNode::getGlobalTransformMatrix() const at /Users/cclark/Documents/Devel/cpp/of_v0.8.4_osx_releaseNIMP/libs/openFrameworks/3d/ofNode.cpp:304
#3 0x008702b6 in ofNode::getGlobalTransformMatrix() const at /Users/cclark/Documents/Devel/cpp/of_v0.8.4_osx_releaseNIMP/libs/openFrameworks/3d/ofNode.cpp:304
#4 0x001a8d26 in ofxTitleBar::_mousePressed(ofMouseEventArgs&) at /Users/cclark/Documents/Devel/cpp/of_v0.8.4_osx_releaseNIMP/addons/ofxComposer_nimp/src/ofxTitleBar.cpp:98
#5 0x001aab99 in ofDelegate<ofxTitleBar, ofMouseEventArgs, false>::notify(void const*, ofMouseEventArgs&) at /Users/cclark/Documents/Devel/cpp/of_v0.8.4_osx_releaseNIMP/apps/NIMPgit/farq2014/../../../libs/openFrameworks/events/ofDelegate.h:124
#6 0x0086d3f4 in Poco::PriorityStrategy<ofMouseEventArgs, Poco::AbstractPriorityDelegate >::notify(void const*, ofMouseEventArgs&) [inlined] at /Users/cclark/Documents/Devel/cpp/of_v0.8.4_osx_releaseNIMP/libs/openFrameworksCompiled/project/osx/../../../../libs/poco/include/Poco/PriorityStrategy.h:81
Noté que al hacer zoom out del proyecto la velocidad de scoll parecería disminuir.
Sería bueno que la velocidad aparente se mantuviera constante.
Estaba haciendo un patcher que era algo así:
CAM ---> IMG Proc ---> Simple MIx --------> Simple MIX
^ ^
IMG ----> IMGP Proc ------| |
|
VIDEO -----------------------------------------------------|
Y nimp abortó ejecución tirando el siguiente stack trace:
Thread 1Queue : com.apple.main-thread (serial)
#0 0x000d13e9 in MixSimpleBlend::resetSizeBasedOnInput(ofxPatch*) at /Users/cclark/Documents/Devel/cpp/of_v0.8.4_osx_releaseNIMP/apps/NIMPgit/farq2014/src/Mixer/MixSimpleBlend.cpp:230
#1 0x001f6efe in ImageOutput::addInput(ofxPatch*) at /Users/cclark/Documents/Devel/cpp/of_v0.8.4_osx_releaseNIMP/apps/NIMPgit/farq2014/src/ImageOutput.cpp:54
#2 0x001e72be in ofxComposer::connect(int, int, int, bool) at /Users/cclark/Documents/Devel/cpp/of_v0.8.4_osx_releaseNIMP/addons/ofxComposer_nimp/src/ofxComposer.cpp:652
#3 0x001e436b in ofxComposer::_mouseReleased(ofMouseEventArgs&) at /Users/cclark/Documents/Devel/cpp/of_v0.8.4_osx_releaseNIMP/addons/ofxComposer_nimp/src/ofxComposer.cpp:394
Cuando se presiona la tecla N para comenzar a crear un nodo no encuentro forma de salir de ese menú si me arrepiento de la creación.
NIMP abortó ejecución una vez que presioné New Patcher.
Lo que hice fue crear un nodo cámara, luego un image processor, luego un audio in, y luego asignar algunos parámetros a audio.
Luego salvé el patcher.
Y por último presioné New Patcher y ahí se disparó el error. Estoy intentando reproducirlo, pero por ahora no pude.
Estuve revisando el tema de HAP, y no le he encontrado la vuelta aún.
Deberíamos empezar a debatir entre los beneficios de trabajar con esta versión de OpenGL para decidir si vamos a la versión estándar y así poder usar el HAP Player.
Según lo que tengo entendido, esta versión de OpenGL sólo se usa porque necesitamos una nueva ventana para la consola. ¿Esto es correcto?
Si es sólo eso, entonces propongo incorporar la consola a la ventana principal de NIMP, se podría hace una sección de consola colapsable a modo de franja vertical en la parte derecha de la pantalla donde se muestran los mensajes. Y se desplegaría y ocultaría con un botón en la barra de opciones superior o en la lateral. Algo en esta zona:
Cuando un camino de procesamiento se apaga, se está apagando el nodo video.
Esto puede no ser un error, pero es inconsistente con lo que pasa con los demás nodos (el resto de los nodos que vi no se apagan).
Acá tenemos que tomar una decisión:
1- Por un lado, está bueno que los nodos se "apaguen", porque aliviana el procesamiento de la máquina y ayuda a mantener el framerate.
2- Por otro lado, si apagamos los nodos no podemos ver cómo se está procesando la imagen resultante de ese camino.
Creo que la mejor solución es un mix de las dos, o sea, darle al usuario la posibilidad de prender o apagar un camino de procesamiento que está switcheado off.
¿Qué les parece?
Hoy pude conectar dos nodos como entrada de un Image Processor (que debería tener una única entrada).
Esto tal vez se esté dando en otros tipos de nodo.
Si bien en la interfaz de los nodos es posible ponerles un nombre (lo que está bueno), si se cierra la interfaz no es posible identificarlos.
Propongo que muestren el nombre del nodo en el cabezal del nodo aún cuando está cerrado. Justo al lado del texto xrmvi.
Parecería haber un desplazamiento entre la letra de la opción y el objeto que responde al evento click.
Probé en el Image Processor. En el nodo cámara parecería no darse (pero no estoy seguro).
Subo video para que se entienda.
Si estoy creando un nodo y mientras escribo el nombre del nodo presiono la tecla F, NIMP se vuelve fullscreen.
Se debería apagar la funcionalidad Fullscreen cuando se está editando algo, o mejor aún, hacer que la funcionalidad fullscreen se dispare con F + una tecla modificadora como Control o Command.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.