cnr-isti-vclab / relight Goto Github PK
View Code? Open in Web Editor NEWA RTI library for creating and visualizing Reflectance Transformation Imaging
License: GNU General Public License v3.0
A RTI library for creating and visualizing Reflectance Transformation Imaging
License: GNU General Public License v3.0
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
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!
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
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: 501Date/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-59A3DF1868B6Sleep/Wake UUID: 5AC36733-EE46-4CD2-8D41-0DB94AB7EE6D
Time Awake Since Boot: 160000 seconds
Time Since Wake: 21000 secondsSystem Integrity Protection: enabled
Crashed Thread: 23 RtiTask
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFYApplication Specific Information:
abort() called
terminating with uncaught exception of type QStringThread 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 + 1Thread 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 + 15Thread 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 + 15Thread 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 + 15Thread 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 + 15Thread 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 + 15Thread 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 + 15Thread 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 + 15Thread 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 + 15Thread 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 + 15Thread 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 + 15Thread 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 + 15Thread 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 + 15Thread 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 + 15Thread 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 + 15Thread 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 + 15Thread 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 + 15Thread 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 + 15Thread 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 + 15Thread 19:
0 libsystem_pthread.dylib 0x00007fff2051a420 start_wqthread + 0Thread 20:
0 libsystem_pthread.dylib 0x00007fff2051a420 start_wqthread + 0Thread 21:
0 libsystem_pthread.dylib 0x00007fff2051a420 start_wqthread + 0Thread 22:
0 libsystem_pthread.dylib 0x00007fff2051a420 start_wqthread + 0Thread 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 + 15Thread 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: 0x00007fff203ecad8Logical CPU: 0
Error Code: 0x02000148
Trap Number: 133Thread 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: 0VM 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 1687Model: 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
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.
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
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
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
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!
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:
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?
Thank you for the nice work!
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
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.
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()
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!
Hello,
While using relight to create RTI with an image set, I noticed that all the algorithms give outputs that look desaturated when compared to the original image set.
This desaturation level ranges from almost black and white in some cases, to slightly (but noticeably) desaturated based on which algorithm is used.
For example, I have attached a cropped close-up of one of the images I am working with and the reconstruction made using relight-cli with 2 separate algorithms.
Is this a known issue? Is something I am doing causing this? I am using jpg images.
Thank you!
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 :)
The readme link to the demo is broken https://pc-ponchio.isti.cnr.it/relight/
and [Relight](#Relight fitter) a PCA based format (see paper) formatting issue
The normal map export produces (compression?) artifacts in the image.
Here e.g. using the fish fossil example dataset from chi.org.
Artifacts all over on the normal map generated with relight, most prominent in the two large horizontal creases on the upper third of the fossil:
Users needs to know wether an LP has been automatically loaded from the folder, or a dome config is in use.
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)
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.
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.
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.
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
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
I'm experimenting with normal maps and relighting using Three.js.
I have noticed the green channel is in a particular direction, what format does Relight make the normal maps in, DirectX or OpenGL?
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.)
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?
see here:
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
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*
?
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.
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
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?
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
.
The CHI video "How to Use RelightLab v1.2.5 to Build Reflectance Transformation Images" (2nd slide at 21+ seconds at https://forums.culturalheritageimaging.org/topic/4113-relightlab-guideline/) indicates there's a correction for light fall-off in the ReLightLab software (now v2024.1). Is this correction automatically applied, or is there an option to enable it? What algorithm is used for this correction?
I've applied an empirical correction for light fall-off in Matlab by capturing neutral gray cards in a light-array dome, but the corrections are only valid for an identical dome geometry and setup. A mathematical correction for different light positions and setups would be a very useful feature in ReLightLab.
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!
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!
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) {
^~~~~~~~~~~~~~~~~~
In the Export window to build an RTI in ReLightLab, it would be useful to be able to set a crop area for sampling the images to determine the coefficients for the various lighting models (PTM, HSH, RBF, etc.), independently from cropping the area of the final output.
Would you like to wrap any pointers with the class template “std::unique_ptr”?
Update candidates:
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
Is there a way to annotate RTIs in the OpenLime viewer (e.g., line drawing tools, polygons, color highlights, labels), and to record these annotations with the viewer settings (e.g., relight positions, rendering options) to share with others? An automatically generated scale bar in the viewer would also be very helpful.
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!
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.