Giter Club home page Giter Club logo

relight's People

Contributors

alemuntoni avatar cignoni avatar cuneifarm avatar ponchio avatar potenziani avatar ruven avatar sepastian avatar unsettledgames avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

relight's Issues

Default dome config in preferences.

Users with a dome will most likely always use the same dome for projecs, add a preference dialog to specify a standard dome to use when loading images.

Use of -D in relight-cli

I've been using the -D option, but I think I'm not calling it correctly since I either get no images in the directory, or only blank images or the same image repeated. Would it be possible to have an example with it?

Thanks!

Batch processing hundrets of stacks

Hello, is there a way of batch processing hundreds of stacks with the same calibration file (lp file) via command line or any kind of scripting?
Best, Michael

Build failure (missing history calls)

I think the history feature might just have been added in master so apologies if I'm reporting a bug on a development branch, but I was getting a build failure which was easily solved by adding history.cpp and history.h to the CMakeLists.txt file in relight directory.

diff --git a/relight/CMakeLists.txt b/relight/CMakeLists.txt
index 4947af7..50c7ad2 100644
--- a/relight/CMakeLists.txt
+++ b/relight/CMakeLists.txt
@@ -71,6 +71,7 @@ set (RELIGHT_HEADERS
        dstretch.h
        dstretchtask.h
        dstretchdialog.h
+       history.h
 )
 
 set (RELIGHT_SOURCES
@@ -124,6 +125,7 @@ set (RELIGHT_SOURCES
        zoomdialog.cpp
        dstretchtask.cpp
        dstretchdialog.cpp
+       history.cpp
 )
 
 set (RELIGHT_FORMS

Diffuse rendering in OpenLime viewer

The rendering for the diffuse layer has no color when I view an LRGB PTM in the OpenLime viewer (in a browser window); it appears the same as the specular layer with the slider pushed all the way to the left. However, if I view the LRGB PTM in the stand-alone RTIViewer (version 1.1.0), it behaves as expected, with diffuse color and shading enhanced compared to the default view.

Relight-cli: error when using the reconstruction error options (-e and -E)

Hi,

I used relight-cli in default mode for a dataset and it worked fine. However, when activating the reconstruction error option (-e), I got the following error:
image

Similarly, when I tried the leave-one-out option -E, I got this. It seems that the name of the image to be excluded is not deleted from the modified .lp file, while the total number of images is updated?
image

Thank you for the nice work!

Windows & macOS versions not working?

Hello there,

At the University of Strasbourg we are developing a platform (https://pount.unistra.fr) that uses relight as viewer. Our researchers have RTI models in RTI or PTM format and then they need to convert them to make them visible in the viewer.

We tried both macOS and Windows versions that are here https://github.com/cnr-isti-vclab/relight/releases/tag/v1.0 , but could not install them. :(

Error messages that we get
macOS BigSur 11.6: "Make sure with the developpers that this software is compatible with this version of macOS"
Windows 10: "Error 0x80070666: Cannot install a product when a newer version is installed."

I sadly can't really help on finding what's going wrong, but I guess it's mainly because of #29 and #31 ..?

Thank you in advance for looking into these. Don't hesitate if you need me to test anything!

Take care,

Virgile

Linux Release - normalmap.py soft crashes trying to import rps.py

I imagine the problem is the normal scripts being in a separate folder.
I originally thought it was an external library and did a pip install of a library that has nothing to do with this project.

I then opened the folder and figured out that rps was another python file in the same folder but i think it's lookiung for it in /scripts and not /scripts/normal

am I right?
How can this be fixed?

( beahvior: no crash, relight says done but generated files miss normals.tzi and the viewer does not work )

/home/jacopo/relight/relight/relight
("/tmp/Relight.RojNRD", "/home/jacopo/Desktop/576/obverse/rti3/norm.png", "0")
Err: Traceback (most recent call last):
  File "/home/jacopo/relight/scripts/normals/normalmap.py", line 2, in <module>
    import rps
  File "/home/jacopo/relight/scripts/normals/rps.py", line 13, in <module>
    import psutil
  File "/home/jacopo/relight/scripts/normals/psutil.py", line 1, in <module>
    import cv2
ModuleNotFoundError: No module named 'cv2'

terminate called after throwing an instance of 'QString'
Aborted (core dumped)

i fixed some of it by doing this:

pip3 install rps
pip3 install psutil
pip3 install opencv-python

but again rps was not an external library just a local file that can't be referenced correctly

so i did this:
pip3 uninstall rps
to avoid interference

then I tried this as well and got this error message:

jacopo@pop-os:~/Desktop/576/obverse/rti10/rti$ python3 /home/jacopo/relight/scripts/normals/normalmap.py ./
Traceback (most recent call last):
  File "/home/jacopo/relight/scripts/normals/normalmap.py", line 2, in <module>
    import rps
  File "/home/jacopo/relight/scripts/normals/rps.py", line 16, in <module>
    from sklearn.preprocessing import normalize
ModuleNotFoundError: No module named 'sklearn'

after this
pip install -U scikit-learn
i get an index out of range error

python3 /home/jacopo/relight/scripts/normals/normalmap.py ./
Traceback (most recent call last):
  File "/home/jacopo/relight/scripts/normals/normalmap.py", line 25, in <module>
    output = sys.argv[2]
IndexError: list index out of range

after skimming the source i realized i was missing two parameters from the previous test and running it with an input output and method yelds this

jacopo@pop-os:~/Desktop/576/obverse/rti11/rti$ python3 /home/jacopo/relight/scripts/normals/normalmap.py ./info.json ./rti2 0
IN NORMALS/SCRIPTS/NORMALMAP
Traceback (most recent call last):
  File "/home/jacopo/relight/scripts/normals/normalmap.py", line 30, in <module>
    data = json.load(f)
  File "/usr/lib/python3.8/json/__init__.py", line 293, in load
    return loads(fp.read(),
  File "/usr/lib/python3.8/json/__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.8/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.8/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 7 column 12 (char 112)

also for context this is the content of this folder ( the output of the relight elaboration)

jacopo@pop-os:~/Desktop/576/obverse/rti11/rti$ ls
index.html     openlime.min.js  plane_0.tzi  plane_1.tzi  plane_2.tzi  plane_3.tzi  plane_4.tzi  plane_5.tzi  plane_6.tzi  plane_7.tzi  plane_8.tzi
info.json      plane_0.jpg      plane_1.jpg  plane_2.jpg  plane_3.jpg  plane_4.jpg  plane_5.jpg  plane_6.jpg  plane_7.jpg  plane_8.jpg  skin.css
materials.png  plane_0.tzb      plane_1.tzb  plane_2.tzb  plane_3.tzb  plane_4.tzb  plane_5.tzb  plane_6.tzb  plane_7.tzb  plane_8.tzb  skin.svg

Make include guards unique

💭 I find that include guards like “LP_H” and “RTI_H” are too short for the safe reuse of your header files (when they belong to an application programming interface).

Latest relight-cli experiences core dumps on Ubuntu 22.04

When compiling relight-cli from the latest commit on Ubuntu 22.04 64bit, it will dump cores and abort.

./relight-cli /home/richard/tool-216/photos1/chunk_1/jpg /home/richard/tool-216/photos1/chunk_1/rti -n -m -b hsh -q 100
Skipping cropped lines... %100
Sampling images: %100relight-cli: /home/richard/gitkraken/relight/relight-cli/rtibuilder.cpp:445: MaterialBuilder RtiBuilder::pickBaseHSH(std::vector<Vector3<float> >&, Rti::Type): Assertion `nplanes == 27 || nplanes == 12' failed.
Aborted (core dumped)

The work around is to use the last release.

Calibration Config - Using relight without chrome ball in each image

Hello, is it possible to use relight without a chrome ball in each image. I want to make one photo of the chrome ball in the center of the image and then replace the chromeval by he object that I want to photograph. The light direction and intensities will stay the same for each image.
In other words: How can I set up relight to work with a "dome" with 8 lights arranged in a circle, illuminating the object/chrome ball from a 45 angle, with same distance/angles between lights.
Many thanks!
Michael

Mac OS Release - Library Incompatibility

MacOS release has compatibility problems with libjpeg.
Catalina (and i assume the more recent releases as well ) ships with libjpeg v9, relight expects v8.

I was able to build and install v8 but relight can't seem to find that version.

Any idea if placing a symlink in a specific place can fix this?
or ideally can you release a version that supports libjpeg 9?
Thanks,
Jacopo

IIIF Image API

I really appreciate many of the features in Relight. Among them is support for IIIF Image API as a tile source. It's not quite all the way there, though. I see "?IIIF=" in the viewer code, which makes me think it was developed on IIP in IIIF mode. The actual IIIF Image API uses only slashes as delimiters, so earlier IIP versions required a rewrite in the web server. The current IIP handles that internally.

I was able to get it to work by modifying two lines and adding two arguments in the HTML, as follows.

The first substitution is to replace:
t.metaDataURL = t.server + "?IIIF=" + t.path + "/" + t.img + "/info.json";
with:
t.metaDataURL = t.iiifServer + t.iiifPath + '/' + t.img + '.jp2/info.json';

The second substitution is to replace:
return t.server+?IIIF=${t.path}/${t.img}/${xr},${yr},${wr},${hr}/${ws},${hs}/0/default.jpg};
with:
return t.iiifServer + t.iiifPath + '/' + image + '.jp2/'+\${xr},${yr},${wr},${hr}/${ws},${hs}/0/default.jpg`;`

For general support the .jp2 should not be assumed since many repositories mask it. It could be in the iiifPath argument. There are many situations in which iiifServer and iiifPath could not be derived from variables already defined.

If you're curious how I'm using Relight, see: http://jubilees.stmarytx.edu/2020/relight.html

Slights modifications to compile on Mac OS catalina

Hi! This is more a "solve" than an issue!

I managed to compile on my mac with some slights modifications in src/eigenpca.h, relight-cli/rtibuilder.cpp and rtibuilder.h I had to enter the full path to Eigen (which was installed through homebrew)
#include </usr/local/include/eigen3/Eigen/Core or Eigenvalues

Also I had to add

INCLUDEPATH += /usr/local/Cellar/armadillo/10.2.0/include/ \
    /usr/local/Cellar/jpeg/9d/include/ \
    /usr/local/include \
    /usr/local/Cellar/armadillo/10.2.0/
LIBS += -L/usr/local/Cellar/armadillo/10.2.0/lib/ -larmadillo -ljpeg \
    -L/usr/local/Cellar/jpeg/9d/lib/ -ljpeg 
LIBS += -framework Accelerate

to the relight.pro in /relight
If that could help anybody, for once!

Thank you so much for this GUI, it's gonna change my life!

Multiple relight-viewer.js on single page

Hello, I'm trying to add multiple relight-viewer.js instances to a single page, into separate divs. The divs are created and sized correctly, but only one RTI is displayed. It appears as if the second RTI gets placed on top of the first one, this can be seen briefly when loading the page. Sometimes the first RTI will be displayed, sometimes the second one.

I am executing this code for each RTI to display.

# relight_id is the unique ID of the div to fill
new RelightViewer(relight_id,{                        
                layers: [                                         
                    {                                             
                        position: [0,0],                          
                        rotation: 0,                              
                        url: data.rti_path,                       
                        layout: 'image'                           
                    }                                             
                ],                                                
                fit: true                                         
            })                                                    
            return false;   

What am I doing wrong? Is relight-viewer.js capable of displaying multiple instances on a single page?

Segfault when using relight-cli -L parameter

I keep getting segfaults when using relight-cli's -L parameter.

I'd like to be able to generate an image corresponding to an arbitrary x,y,z light position. I've tried with various configurations and what I presume to be the correct parameters: -D test.jpg -L 1:0.5:1 which should give an image with lighting from the middle right (is that how x,y,z work?). However, no matter what parameters I give I get a segfault. Does this functionality in fact work? If so, how should it be used?

(I'm using the latest Github commit and compiling on Linux)

Relight-cli: linking error

After pulling the new updates, I get a linking error. Some function definition missing in imageset.h/lp.h, probably?

image

QT is no longer free to use in 2020

QT is no longer free to use in 2020 and requires either paid or free trial. Sadly, this is a bottleneck to the availability of your program and I cannot compile relight in order to convert my PTM to relight format.

Since you use QT the command line, I would suggest replacing it with native c++ commands.

Thanks!

Install instructions incomplete

I was able to run cmake . after some googleing:
users need to issue the following commands before all dependencies are met:
git submodule update --init --recursive
apt-get install python-dev
to solve

Make Error at relight/CMakeLists.txt:11 (add_subdirectory):
  The source directory

    /home/jacopo/relight/relight/pybind11

  does not contain a CMakeLists.txt file.

Please Update the readme file

also this package no longer exists in the ubuntu repos:
libjpeg62-turbo-dev
had to substitute for libjpeg62-dev and now I am seeing the following error when I try to issue the make command:

/home/jacopo/relight/relight/rtiexport.cpp:175:21: error: cannot convert ‘wchar_t**’ to ‘char**’
  175 |    PySys_SetArgv(1, argv);
      |                     ^~~~
      |                     |
      |                     wchar_t**

EDIT: just tested in debian, same error even using the libjpeg62-turbo-dev package

EDIT2: ok not sure this works as intended but chaning that line into
PySys_SetArgv(1, reinterpret_cast<char **>(argv));
at least allows me to compile it. ( this should be a separate issue but i guess it's all under the umbrella of. things to do to get it to compile )

EDIT3: in ubuntu this does not fix the jpeg turbo missing package. after all the above changes this still happens:

/home/jacopo/relight/src/jpeg_decoder.cpp: In member function ‘bool JpegDecoder::decode(uint8_t*, size_t, uint8_t*&, int&, int&)’:
/home/jacopo/relight/src/jpeg_decoder.cpp:30:2: error: ‘jpeg_mem_src’ was not declared in this scope; did you mean ‘jpeg_stdio_src’?
   30 |  jpeg_mem_src(&decInfo, buffer, len);
      |  ^~~~~~~~~~~~
      |  jpeg_stdio_src
make[2]: *** [relight/CMakeFiles/relight.dir/build.make:261: relight/CMakeFiles/relight.dir/__/src/jpeg_decoder.cpp.o] Error 1
make[2]: Leaving directory '/home/jacopo/relight'
make[1]: *** [CMakeFiles/Makefile2:115: relight/CMakeFiles/relight.dir/all] Error 2
make[1]: Leaving directory '/home/jacopo/relight'
make: *** [Makefile:130: all] Error 2

EDIT 4: this is fixed by sudo apt-get install libturbojpeg0-dev
EDIT 5: Attaching this image with some specs/sw info about my setup.

Screenshot from 2021-03-26 10-40-43

Feedback on osx

GUI

Would it be possible to add the sampling setting for larges datasets? Or maybe adjust automatically sampling depending on ram avaliable?
Use specific image for sphere picking or temporary gamma correction to better see the sphere on black background maybe?

Build with deepzoom doesn't do the deepzoom part !

When doing multiple RTI with different settings have to close and reopen the app: It is unable to launch the computation of RTI once the first is successfull.

Impossible to ctrl+v the name in the "choose destination window".

QObject::~QObject: Timers cannot be stopped from another thread (bug when closing window)
-> In a GUI thread, you are using exit()--when you should should have just used emit finished()

YRBF impossible to change the number of chroma planes (greyed out)

Compiling GUI

I had to modify the relight.pro and add:
INCLUDEPATH += /usr/local/Cellar/armadillo/10.2.0/include/
/usr/local/Cellar/jpeg-turbo/2.0.6/include/
/usr/local/include
/usr/local/Cellar/armadillo/10.2.0/
/usr/local/include/eigen3/
LIBS += -L/usr/local/Cellar/armadillo/10.2.0/lib/ -larmadillo
-L/usr/local/Cellar/jpeg-turbo/2.0.6/lib/ -ljpeg
LIBS += -framework Accelerate

Compiling relight-cli with clang

I had to modify the relight.pro and add:
INCLUDEPATH += /usr/local/Cellar/armadillo/10.2.0/include/
/usr/local/Cellar/jpeg-turbo/2.0.6/include/
/usr/local/include
/usr/local/Cellar/armadillo/10.2.0/
/usr/local/include/eigen3/
LIBS += -L/usr/local/Cellar/armadillo/10.2.0/lib/ -larmadillo
-L/usr/local/Cellar/jpeg-turbo/2.0.6/lib/ -ljpeg
LIBS += -framework Accelerate

Still cannot compile it :

../src/getopt.cpp:450:30: warning: comparison of integers of different signs: 'long' and 'size_t'
(aka 'unsigned long') [-Wsign-compare]
if (s - nextchar == strlen (p->name))
~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~

../src/imageset.cpp:157:14: warning: comparison of integers of different signs: 'uint32_t' (aka 'unsigned int') and
'int' [-Wsign-compare]
if(nsamples > width*height)
~~~~~~~~ ^ ~~~~~~~~~~~~

../src/legacy_rti.h:36:62: error: unknown type name 'uint'; did you mean 'int'?
bool decodeJPEGfromFile(size_t size, unsigned char *buffer, uint plane0, uint plane1, uint plane2);
^~~~
int
../src/legacy_rti.h:36:75: error: unknown type name 'uint'; did you mean 'int'?
bool decodeJPEGfromFile(size_t size, unsigned char *buffer, uint plane0, uint plane1, uint plane2);
^~~~
int
../src/legacy_rti.h:36:88: error: unknown type name 'uint'; did you mean 'int'?
bool decodeJPEGfromFile(size_t size, unsigned char *buffer, uint plane0, uint plane1, uint plane2);
^~~~
int
../src/legacy_rti.h:47:54: error: unknown type name 'uint'; did you mean 'int'?
bool decodeJPEG(size_t size, unsigned char *buffer, uint plane);
^~~~
int
../src/legacy_rti.cpp:320:22: warning: comparison of integers of different signs: 'int' and 'uint'
(aka 'unsigned int') [-Wsign-compare]
for(int j = 0; j < basis_terms; j++)
~ ^ ~~~~~~~~~~~
../src/legacy_rti.cpp:688:12: error: out-of-line definition of 'decodeJPEG' does not match any declaration in
'LRti'
bool LRti::decodeJPEG(size_t size, unsigned char *buffer, uint plane) {
^~~~~~~~~~
../src/legacy_rti.cpp:707:12: error: out-of-line definition of 'decodeJPEGfromFile' does not match any declaration
in 'LRti'
bool LRti::decodeJPEGfromFile(size_t size, unsigned char *buffer, uint plane0, uint plane1, uint plane2) {
^~~~~~~~~~~~~~~~~~

RTI export in red

Hello,
Capture d’écran 2023-03-28 125651_relight

I downloaded ReLight2023.02-windows and I used a set of photos specially adapted to the creation of RTI images. Once the sphere is drawn and the lights are recognized, the project and the lights information are saved but when I try to export an image in RTI all the options are in red and when I try to create the RTI image, the application quits.

Here is the screenshot

Thanks in advance for your help and advice

[MacOS] Relight GUI crashes after 2 or 3 RTI.

Cannot wrap my head around this one. The GUI systematically crashes after 2 or 3 RTI.
I always use 2000MB of RAM when computing yrbf maybe the rams overflows?
Here is the crash report from macos:

Process: relight [32624]
Path: /Applications/ReLight1.2.1.app/Contents/MacOS/relight
Identifier: com.vcg.relight
Version: 1.2.1 (1.2.1)
Code Type: X86-64 (Native)
Parent Process: ??? [1]
Responsible: relight [32624]
User ID: 501

Date/Time: 2022-06-01 15:35:01.420 +0200
OS Version: macOS 11.6 (20G165)
Report Version: 12
Bridge OS Version: 5.5 (18P4759a)
Anonymous UUID: 13C8DE09-87E7-6204-032D-59A3DF1868B6

Sleep/Wake UUID: 5AC36733-EE46-4CD2-8D41-0DB94AB7EE6D

Time Awake Since Boot: 160000 seconds
Time Since Wake: 21000 seconds

System Integrity Protection: enabled

Crashed Thread: 23 RtiTask

Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY

Application Specific Information:
abort() called
terminating with uncaught exception of type QString

Thread 0:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00007fff204e92ba mach_msg_trap + 10
1 libsystem_kernel.dylib 0x00007fff204e962c mach_msg + 60
2 com.apple.CoreFoundation 0x00007fff2061649f __CFRunLoopServiceMachPort + 316
3 com.apple.CoreFoundation 0x00007fff20614b7f __CFRunLoopRun + 1328
4 com.apple.CoreFoundation 0x00007fff20613f8c CFRunLoopRunSpecific + 563
5 com.apple.HIToolbox 0x00007fff2885c1f3 RunCurrentEventLoopInMode + 292
6 com.apple.HIToolbox 0x00007fff2885bf55 ReceiveNextEventCommon + 587
7 com.apple.HIToolbox 0x00007fff2885bcf3 _BlockUntilNextEventMatchingListInModeWithFilter + 70
8 com.apple.AppKit 0x00007fff22e1d172 _DPSNextEvent + 864
9 com.apple.AppKit 0x00007fff22e1b945 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1364
10 com.apple.AppKit 0x00007fff22e0dc69 -[NSApplication run] + 586
11 libqcocoa.dylib 0x000000010bd4462f 0x10bd0b000 + 235055
12 org.qt-project.QtCore 0x000000010990facf QEventLoop::exec(QFlagsQEventLoop::ProcessEventsFlag) + 431
13 org.qt-project.QtCore 0x0000000109914042 QCoreApplication::exec() + 130
14 com.vcg.relight 0x000000010887e34a main + 2759
15 libdyld.dylib 0x00007fff20539f3d start + 1

Thread 1:: ProcessQueue
0 libsystem_kernel.dylib 0x00007fff204ebcde __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x00007fff2051ee49 _pthread_cond_wait + 1298
2 org.qt-project.QtCore 0x0000000109745aaf 0x10971b000 + 174767
3 org.qt-project.QtCore 0x000000010974577e 0x10971b000 + 173950
4 org.qt-project.QtCore 0x000000010974569d QWaitCondition::wait(QMutex*, QDeadlineTimer) + 93
5 org.qt-project.QtCore 0x000000010973dfc2 QThread::wait(QDeadlineTimer) + 114
6 org.qt-project.QtCore 0x000000010973ca20 QThread::wait(unsigned long) + 48
7 com.vcg.relight 0x0000000108904e0e ProcessQueue::run() + 72
8 org.qt-project.QtCore 0x000000010973d619 0x10971b000 + 140825
9 libsystem_pthread.dylib 0x00007fff2051e8fc _pthread_start + 224
10 libsystem_pthread.dylib 0x00007fff2051a443 thread_start + 15

Thread 2:: com.apple.NSEventThread
0 libsystem_kernel.dylib 0x00007fff204e92ba mach_msg_trap + 10
1 libsystem_kernel.dylib 0x00007fff204e962c mach_msg + 60
2 com.apple.CoreFoundation 0x00007fff2061649f __CFRunLoopServiceMachPort + 316
3 com.apple.CoreFoundation 0x00007fff20614b7f __CFRunLoopRun + 1328
4 com.apple.CoreFoundation 0x00007fff20613f8c CFRunLoopRunSpecific + 563
5 com.apple.AppKit 0x00007fff22fa323a _NSEventThread + 124
6 libsystem_pthread.dylib 0x00007fff2051e8fc _pthread_start + 224
7 libsystem_pthread.dylib 0x00007fff2051a443 thread_start + 15

Thread 3:
0 libsystem_kernel.dylib 0x00007fff204ebcde __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x00007fff2051ee49 _pthread_cond_wait + 1298
2 libomp.dylib 0x00000001090ac6da void __kmp_suspend_64<false, true>(int, kmp_flag_64<false, true>*) + 398
3 libomp.dylib 0x00000001090953f0 0x10905a000 + 242672
4 libomp.dylib 0x00000001090912fe 0x10905a000 + 226046
5 libomp.dylib 0x00000001090943d2 __kmp_fork_barrier(int, int) + 543
6 libomp.dylib 0x0000000109079ce0 __kmp_launch_thread + 194
7 libomp.dylib 0x00000001090ab55a 0x10905a000 + 333146
8 libsystem_pthread.dylib 0x00007fff2051e8fc _pthread_start + 224
9 libsystem_pthread.dylib 0x00007fff2051a443 thread_start + 15

Thread 4:
0 libsystem_kernel.dylib 0x00007fff204ebcde __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x00007fff2051ee49 _pthread_cond_wait + 1298
2 libomp.dylib 0x00000001090ac6da void __kmp_suspend_64<false, true>(int, kmp_flag_64<false, true>*) + 398
3 libomp.dylib 0x00000001090953f0 0x10905a000 + 242672
4 libomp.dylib 0x00000001090912fe 0x10905a000 + 226046
5 libomp.dylib 0x00000001090943d2 __kmp_fork_barrier(int, int) + 543
6 libomp.dylib 0x0000000109079ce0 __kmp_launch_thread + 194
7 libomp.dylib 0x00000001090ab55a 0x10905a000 + 333146
8 libsystem_pthread.dylib 0x00007fff2051e8fc _pthread_start + 224
9 libsystem_pthread.dylib 0x00007fff2051a443 thread_start + 15

Thread 5:
0 libsystem_kernel.dylib 0x00007fff204ebcde __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x00007fff2051ee49 _pthread_cond_wait + 1298
2 libomp.dylib 0x00000001090ac6da void __kmp_suspend_64<false, true>(int, kmp_flag_64<false, true>*) + 398
3 libomp.dylib 0x00000001090953f0 0x10905a000 + 242672
4 libomp.dylib 0x00000001090912fe 0x10905a000 + 226046
5 libomp.dylib 0x00000001090943d2 __kmp_fork_barrier(int, int) + 543
6 libomp.dylib 0x0000000109079ce0 __kmp_launch_thread + 194
7 libomp.dylib 0x00000001090ab55a 0x10905a000 + 333146
8 libsystem_pthread.dylib 0x00007fff2051e8fc _pthread_start + 224
9 libsystem_pthread.dylib 0x00007fff2051a443 thread_start + 15

Thread 6:
0 libsystem_kernel.dylib 0x00007fff204ebcde __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x00007fff2051ee49 _pthread_cond_wait + 1298
2 libomp.dylib 0x00000001090ac6da void __kmp_suspend_64<false, true>(int, kmp_flag_64<false, true>*) + 398
3 libomp.dylib 0x00000001090953f0 0x10905a000 + 242672
4 libomp.dylib 0x00000001090912fe 0x10905a000 + 226046
5 libomp.dylib 0x00000001090943d2 __kmp_fork_barrier(int, int) + 543
6 libomp.dylib 0x0000000109079ce0 __kmp_launch_thread + 194
7 libomp.dylib 0x00000001090ab55a 0x10905a000 + 333146
8 libsystem_pthread.dylib 0x00007fff2051e8fc _pthread_start + 224
9 libsystem_pthread.dylib 0x00007fff2051a443 thread_start + 15

Thread 7:
0 libsystem_kernel.dylib 0x00007fff204ebcde __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x00007fff2051ee49 _pthread_cond_wait + 1298
2 libomp.dylib 0x00000001090ac6da void __kmp_suspend_64<false, true>(int, kmp_flag_64<false, true>*) + 398
3 libomp.dylib 0x00000001090953f0 0x10905a000 + 242672
4 libomp.dylib 0x00000001090912fe 0x10905a000 + 226046
5 libomp.dylib 0x00000001090943d2 __kmp_fork_barrier(int, int) + 543
6 libomp.dylib 0x0000000109079ce0 __kmp_launch_thread + 194
7 libomp.dylib 0x00000001090ab55a 0x10905a000 + 333146
8 libsystem_pthread.dylib 0x00007fff2051e8fc _pthread_start + 224
9 libsystem_pthread.dylib 0x00007fff2051a443 thread_start + 15

Thread 8:
0 libsystem_kernel.dylib 0x00007fff204ebcde __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x00007fff2051ee49 _pthread_cond_wait + 1298
2 libomp.dylib 0x00000001090ac6da void __kmp_suspend_64<false, true>(int, kmp_flag_64<false, true>*) + 398
3 libomp.dylib 0x00000001090953f0 0x10905a000 + 242672
4 libomp.dylib 0x00000001090912fe 0x10905a000 + 226046
5 libomp.dylib 0x00000001090943d2 __kmp_fork_barrier(int, int) + 543
6 libomp.dylib 0x0000000109079ce0 __kmp_launch_thread + 194
7 libomp.dylib 0x00000001090ab55a 0x10905a000 + 333146
8 libsystem_pthread.dylib 0x00007fff2051e8fc _pthread_start + 224
9 libsystem_pthread.dylib 0x00007fff2051a443 thread_start + 15

Thread 9:
0 libsystem_kernel.dylib 0x00007fff204ebcde __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x00007fff2051ee49 _pthread_cond_wait + 1298
2 libomp.dylib 0x00000001090ac6da void __kmp_suspend_64<false, true>(int, kmp_flag_64<false, true>*) + 398
3 libomp.dylib 0x00000001090953f0 0x10905a000 + 242672
4 libomp.dylib 0x00000001090912fe 0x10905a000 + 226046
5 libomp.dylib 0x00000001090943d2 __kmp_fork_barrier(int, int) + 543
6 libomp.dylib 0x0000000109079ce0 __kmp_launch_thread + 194
7 libomp.dylib 0x00000001090ab55a 0x10905a000 + 333146
8 libsystem_pthread.dylib 0x00007fff2051e8fc _pthread_start + 224
9 libsystem_pthread.dylib 0x00007fff2051a443 thread_start + 15

Thread 10:
0 libsystem_kernel.dylib 0x00007fff204ef9b2 __accept + 10
1 com.vcg.relight 0x00000001088a27a5 0x108875000 + 186277
2 com.vcg.relight 0x00000001088a2622 0x108875000 + 185890
3 libsystem_pthread.dylib 0x00007fff2051e8fc _pthread_start + 224
4 libsystem_pthread.dylib 0x00007fff2051a443 thread_start + 15

Thread 11:
0 libsystem_kernel.dylib 0x00007fff204ebcde __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x00007fff2051ee49 _pthread_cond_wait + 1298
2 libc++.1.dylib 0x00007fff20487d72 std::__1::condition_variable::wait(std::__1::unique_lockstd::__1::mutex&) + 18
3 com.vcg.relight 0x000000010889a073 0x108875000 + 151667
4 com.vcg.relight 0x0000000108899f9d 0x108875000 + 151453
5 libsystem_pthread.dylib 0x00007fff2051e8fc _pthread_start + 224
6 libsystem_pthread.dylib 0x00007fff2051a443 thread_start + 15

Thread 12:
0 libsystem_kernel.dylib 0x00007fff204ebcde __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x00007fff2051ee49 _pthread_cond_wait + 1298
2 libc++.1.dylib 0x00007fff20487d72 std::__1::condition_variable::wait(std::__1::unique_lockstd::__1::mutex&) + 18
3 com.vcg.relight 0x000000010889a073 0x108875000 + 151667
4 com.vcg.relight 0x0000000108899f9d 0x108875000 + 151453
5 libsystem_pthread.dylib 0x00007fff2051e8fc _pthread_start + 224
6 libsystem_pthread.dylib 0x00007fff2051a443 thread_start + 15

Thread 13:
0 libsystem_kernel.dylib 0x00007fff204ebcde __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x00007fff2051ee49 _pthread_cond_wait + 1298
2 libc++.1.dylib 0x00007fff20487d72 std::__1::condition_variable::wait(std::__1::unique_lockstd::__1::mutex&) + 18
3 com.vcg.relight 0x000000010889a073 0x108875000 + 151667
4 com.vcg.relight 0x0000000108899f9d 0x108875000 + 151453
5 libsystem_pthread.dylib 0x00007fff2051e8fc _pthread_start + 224
6 libsystem_pthread.dylib 0x00007fff2051a443 thread_start + 15

Thread 14:
0 libsystem_kernel.dylib 0x00007fff204ebcde __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x00007fff2051ee49 _pthread_cond_wait + 1298
2 libc++.1.dylib 0x00007fff20487d72 std::__1::condition_variable::wait(std::__1::unique_lockstd::__1::mutex&) + 18
3 com.vcg.relight 0x000000010889a073 0x108875000 + 151667
4 com.vcg.relight 0x0000000108899f9d 0x108875000 + 151453
5 libsystem_pthread.dylib 0x00007fff2051e8fc _pthread_start + 224
6 libsystem_pthread.dylib 0x00007fff2051a443 thread_start + 15

Thread 15:
0 libsystem_kernel.dylib 0x00007fff204ebcde __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x00007fff2051ee49 _pthread_cond_wait + 1298
2 libc++.1.dylib 0x00007fff20487d72 std::__1::condition_variable::wait(std::__1::unique_lockstd::__1::mutex&) + 18
3 com.vcg.relight 0x000000010889a073 0x108875000 + 151667
4 com.vcg.relight 0x0000000108899f9d 0x108875000 + 151453
5 libsystem_pthread.dylib 0x00007fff2051e8fc _pthread_start + 224
6 libsystem_pthread.dylib 0x00007fff2051a443 thread_start + 15

Thread 16:
0 libsystem_kernel.dylib 0x00007fff204ebcde __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x00007fff2051ee49 _pthread_cond_wait + 1298
2 libc++.1.dylib 0x00007fff20487d72 std::__1::condition_variable::wait(std::__1::unique_lockstd::__1::mutex&) + 18
3 com.vcg.relight 0x000000010889a073 0x108875000 + 151667
4 com.vcg.relight 0x0000000108899f9d 0x108875000 + 151453
5 libsystem_pthread.dylib 0x00007fff2051e8fc _pthread_start + 224
6 libsystem_pthread.dylib 0x00007fff2051a443 thread_start + 15

Thread 17:
0 libsystem_kernel.dylib 0x00007fff204ebcde __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x00007fff2051ee49 _pthread_cond_wait + 1298
2 libc++.1.dylib 0x00007fff20487d72 std::__1::condition_variable::wait(std::__1::unique_lockstd::__1::mutex&) + 18
3 com.vcg.relight 0x000000010889a073 0x108875000 + 151667
4 com.vcg.relight 0x0000000108899f9d 0x108875000 + 151453
5 libsystem_pthread.dylib 0x00007fff2051e8fc _pthread_start + 224
6 libsystem_pthread.dylib 0x00007fff2051a443 thread_start + 15

Thread 18:
0 libsystem_kernel.dylib 0x00007fff204ebcde __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x00007fff2051ee49 _pthread_cond_wait + 1298
2 libc++.1.dylib 0x00007fff20487d72 std::__1::condition_variable::wait(std::__1::unique_lockstd::__1::mutex&) + 18
3 com.vcg.relight 0x000000010889a073 0x108875000 + 151667
4 com.vcg.relight 0x0000000108899f9d 0x108875000 + 151453
5 libsystem_pthread.dylib 0x00007fff2051e8fc _pthread_start + 224
6 libsystem_pthread.dylib 0x00007fff2051a443 thread_start + 15

Thread 19:
0 libsystem_pthread.dylib 0x00007fff2051a420 start_wqthread + 0

Thread 20:
0 libsystem_pthread.dylib 0x00007fff2051a420 start_wqthread + 0

Thread 21:
0 libsystem_pthread.dylib 0x00007fff2051a420 start_wqthread + 0

Thread 22:
0 libsystem_pthread.dylib 0x00007fff2051a420 start_wqthread + 0

Thread 23 Crashed:: RtiTask
0 libsystem_kernel.dylib 0x00007fff204ef92e __pthread_kill + 10
1 libsystem_pthread.dylib 0x00007fff2051e5bd pthread_kill + 263
2 libsystem_c.dylib 0x00007fff20473406 abort + 125
3 libc++abi.dylib 0x00007fff204e1ef2 abort_message + 241
4 libc++abi.dylib 0x00007fff204d35fd demangling_terminate_handler() + 266
5 libobjc.A.dylib 0x00007fff203cc595 _objc_terminate() + 104
6 libc++abi.dylib 0x00007fff204e1307 std::__terminate(void (*)()) + 8
7 libc++abi.dylib 0x00007fff204e12a9 std::terminate() + 41
8 org.qt-project.QtCore 0x000000010973d77c 0x10971b000 + 141180
9 libsystem_pthread.dylib 0x00007fff2051e8fc _pthread_start + 224
10 libsystem_pthread.dylib 0x00007fff2051a443 thread_start + 15

Thread 23 crashed with X86 Thread State (64-bit):
rax: 0x0000000000000000 rbx: 0x000070000beca000 rcx: 0x000070000bec9938 rdx: 0x0000000000000000
rdi: 0x000000000000db63 rsi: 0x0000000000000006 rbp: 0x000070000bec9960 rsp: 0x000070000bec9938
r8: 0x000070000bec9800 r9: 0x0000000000000000 r10: 0x0000000000000000 r11: 0x0000000000000246
r12: 0x000000000000db63 r13: 0x0000003000000008 r14: 0x0000000000000006 r15: 0x0000000000000016
rip: 0x00007fff204ef92e rfl: 0x0000000000000246 cr2: 0x00007fff203ecad8

Logical CPU: 0
Error Code: 0x02000148
Trap Number: 133

Thread 23 instruction stream not available.

Thread 23 last branch register state not available.

Binary Images:
0x108875000 - 0x108998fff +com.vcg.relight (1.2.1 - 1.2.1) <470D5D31-F30B-3D4B-BBDB-541ABACC8BA8> /Applications/ReLight1.2.1.app/Contents/MacOS/relight
0x1089f6000 - 0x108a25fff +libjpeg.9.dylib (0) /Applications/ReLight1.2.1.app/Contents/Frameworks/libjpeg.9.dylib
0x108a39000 - 0x108e7ffff +org.qt-project.QtWidgets (5.15 - 5.15.2) /Applications/ReLight1.2.1.app/Contents/Frameworks/QtWidgets.framework/Versions/5/QtWidgets
0x108ffa000 - 0x108ffefff +org.qt-project.QtConcurrent (5.15 - 5.15.2) /Applications/ReLight1.2.1.app/Contents/Frameworks/QtConcurrent.framework/Versions/5/QtConcurrent
0x10900d000 - 0x109041fff +org.qt-project.QtXml (5.15 - 5.15.2) <4264985F-0DCB-3E0C-9A9A-6AF5DE67E86C> /Applications/ReLight1.2.1.app/Contents/Frameworks/QtXml.framework/Versions/5/QtXml
0x10905a000 - 0x1090cdfff +libomp.dylib (0) <2DE3713E-36E5-310E-813E-0444387C43F6> /Applications/ReLight1.2.1.app/Contents/Frameworks/libomp.dylib
0x109109000 - 0x1095f2fff +org.qt-project.QtGui (5.15 - 5.15.2) /Applications/ReLight1.2.1.app/Contents/Frameworks/QtGui.framework/Versions/5/QtGui
0x10971b000 - 0x109c8bfff +org.qt-project.QtCore (5.15 - 5.15.2) /Applications/ReLight1.2.1.app/Contents/Frameworks/QtCore.framework/Versions/5/QtCore
0x10bd0b000 - 0x10be79fff +libqcocoa.dylib (0) /Applications/ReLight1.2.1.app/Contents/PlugIns/platforms/libqcocoa.dylib
0x10becf000 - 0x10bf2efff +org.qt-project.QtDBus (5.15 - 5.15.2) /Applications/ReLight1.2.1.app/Contents/Frameworks/QtDBus.framework/Versions/5/QtDBus
0x10bf4d000 - 0x10bf78fff +org.qt-project.QtPrintSupport (5.15 - 5.15.2) /Applications/ReLight1.2.1.app/Contents/Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport
0x10cd65000 - 0x10cd74fff libobjc-trampolines.dylib (824) /usr/lib/libobjc-trampolines.dylib
0x10df4f000 - 0x10df74fff +libqmacstyle.dylib (0) <5B9ADB30-04AC-325F-BB42-6E40DF6D7E6A> /Applications/ReLight1.2.1.app/Contents/PlugIns/styles/libqmacstyle.dylib
0x10df8a000 - 0x10df91fff +libqsvgicon.dylib (0) /Applications/ReLight1.2.1.app/Contents/PlugIns/iconengines/libqsvgicon.dylib
0x10df9b000 - 0x10dfcffff +org.qt-project.QtSvg (5.15 - 5.15.2) <11F2F083-B281-39FC-9B0A-081F047A6C85> /Applications/ReLight1.2.1.app/Contents/Frameworks/QtSvg.framework/Versions/5/QtSvg
0x1154bd000 - 0x1154c4fff +libqgif.dylib (0) /Applications/ReLight1.2.1.app/Contents/PlugIns/imageformats/libqgif.dylib
0x1154cd000 - 0x1154d4fff +libqicns.dylib (0) <87D3521F-7D97-3B63-B928-0C60E87DCA21> /Applications/ReLight1.2.1.app/Contents/PlugIns/imageformats/libqicns.dylib
0x1154dd000 - 0x1154e2fff +libqico.dylib (0) <6A858A22-8E2E-3F6D-B9AC-438C4749C8B7> /Applications/ReLight1.2.1.app/Contents/PlugIns/imageformats/libqico.dylib
0x1154eb000 - 0x11554ffff +libqjpeg.dylib (0) <18B65BE7-2104-3D96-9A0C-95DC8839AE72> /Applications/ReLight1.2.1.app/Contents/PlugIns/imageformats/libqjpeg.dylib
0x11555a000 - 0x115560fff +libqmacheif.dylib (0) /Applications/ReLight1.2.1.app/Contents/PlugIns/imageformats/libqmacheif.dylib
0x115569000 - 0x11556efff +libqmacjp2.dylib (0) <6EBF7C32-C2DC-32AB-BD6F-E79F35B8095F> /Applications/ReLight1.2.1.app/Contents/PlugIns/imageformats/libqmacjp2.dylib
0x115577000 - 0x11557bfff +libqtga.dylib (0) /Applications/ReLight1.2.1.app/Contents/PlugIns/imageformats/libqtga.dylib
0x115584000 - 0x1155eafff +libqtiff.dylib (0) <4A7C57BC-CE03-315D-A828-80B3502F75CC> /Applications/ReLight1.2.1.app/Contents/PlugIns/imageformats/libqtiff.dylib
0x1155f8000 - 0x1155fcfff +libqwbmp.dylib (0) <75D3FBD1-5EEA-3C2E-B14E-822A265AFA67> /Applications/ReLight1.2.1.app/Contents/PlugIns/imageformats/libqwbmp.dylib
0x115605000 - 0x11569bfff +libqwebp.dylib (0) /Applications/ReLight1.2.1.app/Contents/PlugIns/imageformats/libqwebp.dylib
0x115e6c000 - 0x115f07fff dyld (852.2) <0CC19410-FD43-39AE-A32A-50273F8303A4> /usr/lib/dyld
0x130533000 - 0x130536fff com.apple.CloudDocsFileProvider (1.0 - 738.1) <33A97073-E06F-317D-AAF2-0B160F3122F3>

External Modification Summary:
Calls made by other processes targeting this process:
task_for_pid: 0
thread_create: 0
thread_set_state: 0
Calls made by this process:
task_for_pid: 0
thread_create: 0
thread_set_state: 0
Calls made by all processes on this machine:
task_for_pid: 0
thread_create: 0
thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=735.9M resident=0K(0%) swapped_out_or_unallocated=735.9M(100%)
Writable regions: Total=1.0G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=1.0G(100%)

                            VIRTUAL   REGION 

REGION TYPE SIZE COUNT (non-coalesced)
=========== ======= =======
Accelerate framework 384K 3
Activity Tracing 256K 1
CG backing stores 3240K 6
CG image 192K 17
CoreAnimation 144K 15
CoreGraphics 12K 2
CoreUI image data 1480K 13
Foundation 68K 2
Kernel Alloc Once 8K 1
MALLOC 610.7M 465
MALLOC guard page 32K 6
MALLOC_NANO (reserved) 384.0M 1 reserved VM address space (unallocated)
STACK GUARD 56.1M 24
Stack 72.2M 24
VM_ALLOCATE 76K 17
__DATA 14.9M 356
__DATA_CONST 12.5M 186
__DATA_DIRTY 701K 105
__FONT_DATA 4K 1
__LINKEDIT 504.7M 36
__OBJC_RO 70.3M 1
__OBJC_RW 2496K 2
__TEXT 231.3M 354
__UNICODE 588K 1
mapped file 549.1M 32
shared memory 764K 16
=========== ======= =======
TOTAL 2.5G 1687
TOTAL, minus reserved VM space 2.1G 1687

Model: MacBookAir9,1, BootROM 1554.140.20.0.0 (iBridge: 18.16.14759.0.1,0), 4 processors, Quad-Core Intel Core i7, 1,2 GHz, 16 GB, SMC
Graphics: kHW_IntelIrisPlusGraphicsItem, Intel Iris Plus Graphics, spdisplays_builtin
Memory Module: BANK 0/ChannelA-DIMM0, 8 GB, LPDDR4X, 3733 MHz, SK Hynix, H9HCNNNFBMALPR-NEE
Memory Module: BANK 2/ChannelB-DIMM0, 8 GB, LPDDR4X, 3733 MHz, SK Hynix, H9HCNNNFBMALPR-NEE
AirPort: spairport_wireless_card_type_airport_extreme, wl0: Aug 10 2021 20:12:07 version 16.50.21.1.3.6.103 FWID 01-be40218e
Bluetooth: Version 8.0.5d7, 3 services, 27 devices, 1 incoming serial ports
Network Service: Wi-Fi, AirPort, en0
USB Device: USB 3.1 Bus
USB Device: USB 3.1 Bus
USB Device: Apple T2 Bus
USB Device: Touch Bar Backlight
USB Device: Apple Internal Keyboard / Trackpad
USB Device: Headset
USB Device: Ambient Light Sensor
USB Device: FaceTime HD Camera (Built-in)
USB Device: Apple T2 Controller
Thunderbolt Bus: MacBook Air, Apple Inc., 85.0

Windows Release - Missing the scripts folder

I tried downloading the scripts folder from the master branch but when i select it in the preferences the software says it's looking for python versions of the sh files and those are missing.

fixed by redownloading a fresh version of the scripts folder,
still should be included in the zipfile

even with this none of the scripts seem to run
The viewer works but it's just creating the jpgs planes

Sphere selection handling

Hi!
Would it be possible for the cursor to change shape when hovering a point of a sphere to make it more obvious that the points can be moved?
And maybe a ctrl+Z to erase the last point?
Thanks!

Using TIFF Stacks as a Self-Contained Single File Relight Output Format

It would be useful to be able to sometimes export the relight output folder (info.json + planes) into in a single self-contained image format. I added support in IIPImage in the last release for TIFF image stacks, which can provide a practical way to store the different image planes as well as the info.json metadata in a single file.

Essentially, the various planes can be stored as pages within a multi-page TIFF with the info.json embedded in a metadata field (I've used the TIFF XMP field, but this could also be in the TIFF image description field). The different resolution levels are stored within the TIFF using SubIFDs instead of top-level IFDs. This follows the way the OME-TIFF standard works in the whole-slide microscopy field.

The IIPImage server allows you access any plane through the SDS parameter, for example FIF=rti.tif&SDS=3&JTL=0,0 for plane 3. The info.json can be obtained from the XMP field using OBJ=xmp: FIF=rti.tif&OBJ=xmp.

I've made a pull request (#62) that adds a python script for creating an image stack from a relight output folder and updates the relight.js javascript to simplify the existing iip layout code and add support for image stacks. This makes using IIPImage with relight much easier as the you no longer need separate url and path variables or need to make your info.json file available on a separate URL.

Let me know what you think about this approach!

Question: normals extraction with relight-cli, colors seem off?

Hi,

I have extracted normal maps for my data (using -n option) and the exported RGB normal maps don't look correct. They are mostly pink. When visualizing the same data with relight, the normal layer visualization makes more sense. So I'm wondering if this is a problem of the data (input colorspace?) and/or is there something going wrong in relight-cli normal image writing?

Thanks!

Compiling from sources mac hardware (M1 / M2)

Hi!
I had an issue on my Mac with an M2 processor when trying to use the precompiled binaries relight-cli and relight-merge from the latest version. When trying to compile from the sources, Cmake couldn't find libomp, so I had to install it using the command brew install libomp. Then I modified the cmakelists file by adding the following elements, and everything worked well!

if (APPLE)
  set(OpenMP_C "/opt/homebrew/opt/libomp/lib/libomp.dylib")
  set(OpenMP_CXX "/opt/homebrew/opt/libomp/lib/libomp.dylib")
  set(OpenMP_C_INCLUDE_PATHS "/opt/homebrew/opt/libomp/include")
  set(OpenMP_CXX_INCLUDE_PATHS "/opt/homebrew/opt/libomp/include")
  set(OpenMP_C_FLAGS "-Xpreprocessor -fopenmp -I/opt/homebrew/opt/libomp/include")
  set(OpenMP_CXX_FLAGS "-Xpreprocessor -fopenmp -I/opt/homebrew/opt/libomp/include")
  set(OpenMP_C_LIB_NAMES "omp")
  set(OpenMP_CXX_LIB_NAMES "omp")
  set(OpenMP_omp_LIBRARY "/opt/homebrew/opt/libomp/lib/libomp.dylib")
endif()

Validate format of lights.lp

I ran relight-cli with an erroneous lights.lp file, the number of lights in line 1 was missing.

This is my fault of course, but it would have been helpful if this error had been caught and handled by relight-cli. What I got was only a floating point exception:

$ relight-cli /in
Floating point exception (core dumped)

If lights.lp is invalid or missing, relight-cli should make this explicit to the user.

le librerie qt sono una dipendenza antipatica suggerirei coprire come installare i pacchetti necessari nel file readme

probabilmente questi sono piu' pacchetti del necessario ma con questi comandi da un'istallazione nuova di debian e' possibile compilare relight con qmake senza problemi suggerirei di fare una cernita di cosa sia strettamente necessario e includere una sezione nel readme "installazione dipendenze"


echo 'deb-src http://deb.debian.org/debian buster main' | sudo tee -a /etc/apt/sources.list
sudo apt-get update
sudo apt-get upgrade
sudo apt-get build-dep qt5-default
sudo apt install libxcb-xinerama0-dev build-essential perl python git '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev libssl-dev libxcursor-dev libxcomposite-dev libxdamage-dev libxrandr-dev libdbus-1-dev libfontconfig1-dev libcap-dev libxtst-dev libpulse-dev libudev-dev libpci-dev libnss3-dev libasound2-dev libxss-dev libegl1-mesa-dev gperf bison libbz2-dev libdrm-dev libcups2-dev libatkmm-1.6-dev libgcrypt20-dev libasound2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libclang-6.0-dev llvm-6.0 qt5-default libarmadillo9 libarmadillo-dev

sudo strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5

cd
git clone https://github.com/cnr-isti-vclab/relight.git

cd relight/relight
qmake
make

cp ~/.profile  ~/.bash_profile
echo "alias relight='~/relight/bin/relight'" >> ~/.bash_profile


testato anche su windows subsystem per linux con debian :)

[Request] RBF mask sampling

Hello!

I was wondering if it would be possible to select the area where the sampling for the RBF function would happen using a binary mask? I'm planning to mask out all the background and get the best sampling possible.
Also, the mask would be used as an input and the output RTI would be already masked out. The masked zone would be skipped for computation.
I hope this request seems relevant,

Thanks!

Eloi

What is relight-merge for?

Hey I am teaching myself how to use Relight in place of RTIBuilder and RTIViewer, I was wondering what is the use case for the application called relight-merge.

Usage of libjpeg?

A dependency of relight is libjpeg. But looking at the code, there's also src/jpeg_*coder.*, which is used by relight-cli.

Is libjpeg actually used? If not, should it be used instead of the bundled src/jpeg_*coder*?

Icons barely visible

Capture d’écran, le 2023-03-28 à 11 56 50
The icons for editing and deleting a sphere are barely visible, could a higher contrast one be used?
They do appear clearly in dark mode :
Capture d’écran, le 2023-03-28 à 11 57 50

Thanks!!

Dockerfile

Good morning, I have created a Dockerfile for relight-cli, allowing to build RTIs inside a Docker container. This can be useful when using relight-cli as a component responsible for building RTIs in another, larger system; or simply to give it a quick try, without having to install anything.

https://github.com/sepastian/relight-docker

Would you be interested in adding a Dockerfile to the official repository of relight? I could provide a PR.

(Before doing so, I would make some optimizations to the current Dockerfile, to get a smaller container image.)

Web viewer not working in certain Linux versions

Tested in Firefox 60.8.0esr (64-bit) under:

$ uname -a
Linux x220 5.2.0-2-amd64 #1 SMP Debian 5.2.9-2 (2019-08-21) x86_64 GNU/Linux

Error in browser console:

Error: WebGL warning: linkProgram: Must have an compiled fragment shader attached.
relight-core.js:776:2
Error: WebGL warning: useProgram: Program has not been successfully linked.
relight-core.js:777:2
Error: WebGL warning: getUniformLocation: `program` must be linked.
relight-core.js:781:21
Error: WebGL warning: getUniformLocation: `program` must be linked.
relight-core.js:782:21
Error: WebGL warning: getUniformLocation: `program` must be linked.
relight-core.js:783:21
Error: WebGL warning: getUniformLocation: `program` must be linked.
relight-core.js:785:20
Error: WebGL warning: getUniformLocation: `program` must be linked.
relight-core.js:786:23
Error: WebGL warning: getUniformLocation: `program` must be linked.
relight-core.js:788:17
Error: WebGL warning: getUniformLocation: `program` must be linked.
relight-core.js:789:17
Error: WebGL warning: getAttribLocation: `program` must be linked.
relight-core.js:802:18
Error: WebGL warning: vertexAttribPointer: -1 is not a valid `index`. This value probably comes from a getAttribLocation() call, where this return value -1 means that the passed name didn't correspond to an active attribute in the specified program.
relight-core.js:803:2
Error: WebGL warning: enableVertexAttribArray: -1 is not a valid `index`. This value probably comes from a getAttribLocation() call, where this return value -1 means that the passed name didn't correspond to an active attribute in the specified program.
relight-core.js:804:2
Error: WebGL warning: getAttribLocation: `program` must be linked.
relight-core.js:810:16
Error: WebGL warning: vertexAttribPointer: -1 is not a valid `index`. This value probably comes from a getAttribLocation() call, where this return value -1 means that the passed name didn't correspond to an active attribute in the specified program.
relight-core.js:811:2
Error: WebGL warning: enableVertexAttribArray: -1 is not a valid `index`. This value probably comes from a getAttribLocation() call, where this return value -1 means that the passed name didn't correspond to an active attribute in the specified program.
relight-core.js:812:2
Error: WebGL warning: getUniformLocation: `program` must be linked.
relight-core.js:814:22
Error: WebGL warning: getUniformLocation: `program` must be linked.
relight-core.js:818:16
Error: WebGL warning: useProgram: Program has not been successfully linked.
relight-core.js:582:2
Error: WebGL warning: useProgram: Program has not been successfully linked.
relight-core.js:947:2
Error: WebGL warning: vertexAttribPointer: -1 is not a valid `index`. This value probably comes from a getAttribLocation() call, where this return value -1 means that the passed name didn't correspond to an active attribute in the specified program.
relight-core.js:901:2
Error: WebGL warning: enableVertexAttribArray: -1 is not a valid `index`. This value probably comes from a getAttribLocation() call, where this return value -1 means that the passed name didn't correspond to an active attribute in the specified program.
relight-core.js:902:2
Error: WebGL warning: vertexAttribPointer: -1 is not a valid `index`. This value probably comes from a getAttribLocation() call, where this return value -1 means that the passed name didn't correspond to an active attribute in the specified program.
relight-core.js:907:2
Error: WebGL warning: enableVertexAttribArray: -1 is not a valid `index`. This value probably comes from a getAttribLocation() call, where this return value -1 means that the passed name didn't correspond to an active attribute in the specified program.
relight-core.js:908:2
Error: WebGL warning: drawElements: The current program is not linked.
relight-core.js:914:2
Error: WebGL warning: useProgram: Program has not been successfully linked.
relight-core.js:947:2
Error: WebGL warning: vertexAttribPointer: -1 is not a valid `index`. This value probably comes from a getAttribLocation() call, where this return value -1 means that the passed name didn't correspond to an active attribute in the specified program.
relight-core.js:901:2
Error: WebGL warning: enableVertexAttribArray: -1 is not a valid `index`. This value probably comes from a getAttribLocation() call, where this return value -1 means that the passed name didn't correspond to an active attribute in the specified program.
relight-core.js:902:2
Error: WebGL warning: vertexAttribPointer: -1 is not a valid `index`. This value probably comes from a getAttribLocation() call, where this return value -1 means that the passed name didn't correspond to an active attribute in the specified program.
relight-core.js:907:2
Error: WebGL warning: enableVertexAttribArray: -1 is not a valid `index`. This value probably comes from a getAttribLocation() call, where this return value -1 means that the passed name didn't correspond to an active attribute in the specified program.
relight-core.js:908:2
Error: WebGL warning: drawElements: The current program is not linked.
relight-core.js:914:2

WebGL is functional, for example https://artsexperiments.withgoogle.com/freefall/random can be viewed without problems on this system.

The problem occurs also using Google Chrome.

Relight crashes when trying to build RTI result on Windows 10

Relight crashes after a few seconds when I click the build button. I have added 9 pictures, located the sphere, and the highlight was detected.
I get to chose a file name and then some progressbars show up (no progress) and the program crashes.

I have installed vc_redist.x64.exe and restarted the computer.

I have installed Python 3.11 and run the pip commands.
However, while doing that I got an error trying to follow the installation instructions. I had to change

pip install opencv-python sklearn pyvips
into this:
pip install opencv-python scikit-learn pyvips

Could this be a problem, that Relight still expects sklearn, and that it is no longer supported by pip?

I have added the path to Python.exe in the Relight preferences.
(There is also a setting for "scripts folder" in the preferences. I have no idea what to put there.)

I have added the 32 bit version of "libvips" to a folder and added the path to its bin folder to system environment PATH. (There is really no good information on how to install libvips on Windows, but adding its path to the PATH variable ought to be enough, right?).

Anyway, no change. Relight still crashes. What could be the problem?

onload example

Hi,

I am currently trying to find out how I can use the documented onload (is it realy "onload" or should it be "onLoad"?) function.

      rti = new RelightViewer(el,
        {
          layers: [
                {
                        position: [0, 0],
                        rotation: 0,
                        url: $(el).attr('data-uri'),
                        layout: 'image',
                        visible: true,
                }
          ],
          fit: true,
          pos: { x:0, y:0, z:0, a:0 },
          rotation: 0,
          scale: 1.0,
          background: [0.7, 0.7, 0.7, 1],
        })
      rti.onload = function(t) {console.log('test')}

doesn't work for me. The function is never triggered.
Since the model to be displayed is quite large, I would like to display a spinner during the loading process.

Leonhard Maylein

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.