Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - James

Pages: [1] 2 3 ... 12
1
LaserBoy !!! / Finally some LaserBoy tutorials!
« on: October 20, 2020, 07:21:19 pm »
Check out my LaserBoy YouTube Playlist for a series of videos about using LaserBoy.

https://m.youtube.com/playlist?list=PL5jNNJiddsJWPdauON6o-shp7lZCEhd4M

2

struct LaserBoy_bmp (written in C)


class LaserBoy_color


class LaserBoy_palette_base : public vector<LaserBoy_color>
class LaserBoy_palette : public LaserBoy_palette_base
class LaserBoy_palette_set_base : public vector<LaserBoy_palette>
class LaserBoy_palette_set : public LaserBoy_palette_set_base


class LaserBoy_3D_double
class LaserBoy_real_vertex : public LaserBoy_3D_double, public LaserBoy_color
class LaserBoy_real_segment_base : public vector<LaserBoy_real_vertex>
class LaserBoy_real_segment : public LaserBoy_real_segment_base
class LaserBoy_real_segment_set : public vector<LaserBoy_real_segment>


class LaserBoy_ild_header


class LaserBoy_3D_short
class LaserBoy_vertex : public LaserBoy_3D_short, public LaserBoy_color
class LaserBoy_segment_base : public vector<LaserBoy_vertex>
class LaserBoy_segment : public LaserBoy_segment_base
class LaserBoy_frame : public LaserBoy_ild_header, public LaserBoy_segment
class LaserBoy_frame_set_base : public vector<LaserBoy_frame>
class LaserBoy_frame_set : public LaserBoy_frame_set_base


class LaserBoy_wave_optimization_parameters
class LaserBoy_wave_header
class LaserBoy_wave_sample


class LaserBoy_space : public LaserBoy_frame_set, public LaserBoy_palette_set


class LaserBoy_TUI : public LaserBoy_space
class LaserBoy_GUI_base
class LaserBoy_SDL_GUI : public LaserBoy_GUI_base

3
About This Forum / 54
« on: November 17, 2018, 03:18:46 am »
I had an awesome birthday 11/16/18.


I wish you could have been there!


James.

4
Media of the moment / James Lehman solo exhibition at Akrona Gallery
« on: October 26, 2015, 05:01:28 pm »
Hey everyone!

I just got the date.

January 7th, 2016.

will be the opening reception for a 3 week solo exhibition of my work at Akrona Gallery.

I will have at least 20 paintings and probably as many or more of my polymer clay items on display and for sale.

I will also have a nice collection of my wire-wrapped stones so there will be items from about $20 to thousands for all art collectors.

Hope to see you there!

http://www.akrona.com/

James.

5
I just made a pile of cool necklaces!


James.

6
LaserBoy !!! / Totally new functions!
« on: February 23, 2015, 02:54:08 pm »
A new new new newer version of LB is available!

http://laserboy.org/code/LaserBoy_2015_02_23.zip

I added a couple of new features and several new settings.

LB now does proximity based curve fitting (of a sort).

If you go into menu [Tab] system value settings, you can set option 2 insignificant distance. The default is 60.

This value has always been there for wave import normalization, but now it serves as a parameter for minimizing the loaded frame set.

If you look in menu h frame transforms, you'll see some new functions have been added and the key values are slightly different.

Option f fit to insignificant distance is the function itself. You can apply it to the art directly with the f key, and it is also included in the minimization process.

I have found that insignificant distance (in the [Tab] menu) can be set as high as option 3 max optimized lit vector in points with very nice results, depending on the art you apply it to.

For example, I can set option c rendered arc angle in degrees to something very small like 0.2 and then go into menu m render segments by coordinates and draw some really nice curvy math figures. The rendered arc angle determines how the curve is quantized into individual vertices. The smaller the arc step the more points there will be.

Then I can go into menu h and hit k to minimize and the points along the curve are reduced in number but the curve is still nicely fitted.

Be aware that using a high number for insignificant distance can really wreck art with a lot of small details.

Another function I just added is called conglomerate segments. It looks at all the lit segments in a frame to see of any of the ends meet. If so it glues those segments together into one continuous lit segment. If there are multiple segment ends that match, it looks at all of them and chooses the one that requires the least change in direction.

I have found that DXF imports can be all broken up into individual vectors in the wrong order, even though you might have drawn the image using POLYLINE.

This function will fix that.

It can be a very time consuming function when there are a lot of individual lit segments. The number of calculations it takes is exponentially related to how many items it has to sort.

In menu x system switch settings there are two new settings; 8 conglomerate in minimize and 9 fracture conglomerate. The first one tells LB whether it should use this function during minimization or not. The second one tells LB if it should fracture all of the segments into individual lit vectors before sorting them out and conglomerating them.

One other feature I added is in the u user interface visuals menu. Now you can choose to have the menu font with an opaque background. This makes it easier to read over a lot of detailed vector art.

James.

7
About This Forum / ... And we're back!
« on: March 24, 2014, 11:30:19 pm »
Wow! That was a break!

The RAID in the laserboy.org server crashed!

I took it home on 02/25/14 and finally got it fixed and re-racked today, 03/24/14.

I replaced two of the six drives. Over time I am going to replace all the drives with brand new ones.

We should be OK.

Special thanks to BlinkenLights for fixing the crashed MySQL table for The LaserBoy Forum!

James.   :)

9
LaserBoy !!! / 10 Years and counting!
« on: February 14, 2014, 10:07:46 pm »
I started working on the code that would become LaserBoy back in late 2003.

I used that code to develop a show for First Night Akron 2004.

Not long after that I focused my attention on getting a multi-channel sound card to work as a laser DAC.

The rest, as they say, is history.

Thanks to everyone who has had a positive attitude toward me, my work and this forum!

James. :)

10
Media of the moment / Cool Video!
« on: December 08, 2013, 11:33:23 am »
Check this out!

http://www.youtube.com/watch?v=73rzInRI2gw

Phillip in Berlin made a museum installation and a video. He used LaserBoy to convert from DXF to ILDA and optimize!

James.

11
DACs / Genuine Extra Stimulus LaserBoy Correction Amp Boards!
« on: September 06, 2013, 02:59:40 pm »
Check it out!

This is a totally new design of the LaserBoy Correction Amp board!

This is the first one I did completely by myself (other than all the ones I made by hand on copper proto-board).

Back in 2008, I did a layout and the trace routing for a board and drlava did the circuit CAD. This is the green board that has been out there pictured all over the web.

This new red one is a bit smaller and features all of the design revisions since then.

It has a variable negative voltage regulator instead of a fixed one. It has much finer resolution for the offset null and it has a higher gain factor. Plus it has 5.1v zener diodes to prevent over-voltage on the color channels!

It is a single sided board with almost 100% copper coverage for the ground plane.

Right now I am waiting on shipments of all the parts to make finished LaserBoy DACs like the one pictured here and kits of the PCB and all the parts.

This kit will also work with PCI internal sound cards without the need of the DC/DC converter by using the +12 and -12 V from the PCI slot. I will probably make a few finished examples of that configuration for sale as well.

I will let everyone know when they are available.

12
LaserBoy !!! / Raspberry Pi (and other tiny Linux computers)
« on: April 14, 2013, 04:04:45 pm »
Hey everyone! Check it out!

http://laserboy.org/code/LaserBoy_2013_04_14.zip

http://laserboy.org/code/LaserBoy_2013_04_16.zip

This latest version of LaserBoy has been specifically reworked to compile and run on the Raspberry Pi!

It comes with instructions for the adventurous.

I fixed a lot of weird color issues that now make it look perfect in 16 bit packed pixel video (default video mode for Xfree86 on the Pi). These fixes should also resolves some issues for Mac OSX, that I could not see any other way.

Please check it out (both Pi and Mac users) and let me know how it goes.

Now I have a lot of more work to do to try to get the USB SND8 sound device (LaserBoy DAC) to work on the Pi. Future plans are to write a web interface so that the Pi can be a headless laser projector control device.

James.

13
LaserBoy !!! / Beautiful Single Line vector Font for LaserBoy!
« on: February 28, 2013, 02:20:01 pm »
Check this out!

As part of the new development in LaserBoy and its improved font rendering capability, I have created a new (manually drawn) Single Line Vector Font!

You will never get a font that has as few points or is as easy to scan (fast) as this by rendering any kind of True Type (double stroke) computer font!

Read this post: http://laserboy.org/forum/index.php?topic=533.msg6398#msg6398

There are actually two versions:

font_narrow_vector.ild
font_wide_vector.ild

Since I spent several days manually drawing each glyph of this font, I would like to make it available to LaserBoy users for $20 for both the narrow and the wide versions in ild file form, ready to be dropped into the LaserBoy/ild folder and used just like the other fonts that come with the LaserBoy distribution.

Please contact me through this forum if you are interested in purchasing these font files. I take PayPal or snail mailed personal checks.

James.  :)

14
LaserBoy !!! / Installing MinGW C++ compiler in Windows (for LaserBoy!)
« on: February 18, 2013, 07:12:24 pm »
This is a step-by-step guild to setting up MinGW (GNU environment with GCC 4.7.2) in Windows, building and installing Boost-C++ 1.53.0, installing SDL 1.2.15, and Dev-C++ as a code editor.

Once all of this is done, it will be possible to double click on LaserBoy.dev that comes with the current distribution of LaserBoy in the src directory and Dev-C++ will open the project ready to compile and link.

For this installation C:\ is assumed to be the root of your system drive.



Step one: Get your files!

Get the latest version of mingw-get-inst
http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/

Get the latest version of boost. It comes in several different compression platforms. You might as well get the Windows zip. This document assumes the current version is boost_1_53_0.zip.
http://www.boost.org/

Get the SDL development libraries. Look for the Windows MinGW version. It will be something like SDL-devel-1.2.15-mingw32.tar.gz.
http://www.libsdl.org/download-1.2.php

Get Dev-C++ 5.0 beta 9.2 (4.9.9.2), executable only (2.4 MB)
This application will never be updated. It's no longer being developed, but it is a nice C++ editor anyway. The MinGW system is the GNU GCC compiler.
http://www.bloodshed.net/dev/devcpp.html

And, of course, LaserBoy! Get the latest version here:
http://laserboy.org/forum/index.php?topic=10.0



INSTALLATION:

Start with the MinGW system. This will install a GNU like system inside of Windows. It provides a shell that behaves like BASH and a nice collection of commands and utilities.

Run the installer.
Choose the option to "Download latest repository catalogues".
Accept the agreement.
Accept the file location to be C:\MinGW at the root of a drive.
In the "Select Components" section, choose
  • C compiler
  • C++ compiler
  • MinGW Developer ToolKit.
Start the installation process. It takes a while!

After the installation is complete, go into your programs menu and open the MinGW shell. Doing this will create the home directory and add your current Windows login name to the MinGW system.


Navigate to the folder:
C:\MinGW\msys\1.0\home\[your_windows_name]

Copy the SDL development libraries archive file there.

From the MinGW shell, issue the following command to extract the archive file, while unzipping it, verbosely from the following named file.

tar -xzvf SDL-devel-1.2.15-mingw32.tar.gz

The shell has [Tab] key command completion, so you should just type up to the SDL part and hit tab for the rest, then [Enter] and wait for it to complete.


Now you can move the include files and the libs into the MinGW system.

Navigate to:

C:\MinGW\msys\1.0\home\[your_windows_name]\SDL-1.2.15\include\SDL

Select and cut all the files found in this folder that do not begin with '._' .

Navigate to:

C:\MinGW\include\

Create a new directory there called SDL

Paste the above cut files in this folder:

C:\MinGW\include\SDL



Navigate to:

C:\MinGW\msys\1.0\home\[your_windows_name]\SDL-1.2.15\lib

Select and cut all the files found in this folder that do not begin with '._' .

Navigate to and paste the above cut files in this folder:

C:\MinGW\lib


The LaserBoy distribution comes with the runtime file SLD.dll version 1.2.15. If for some reason you need this file and you do not have LaserBoy, this file is found here:

C:\MinGW\msys\1.0\home\[your_windows_name]\SDL-1.2.15\bin\SDL.dll

You are now done installing SDL! You can delete the un-archived folder that you created in your MinGW home directory.

Now you must add the MinGW bin directory to your Windows system PATH statement so that Windows can find the executables located there.

Right click on (My) Computer and look in the Advanced tab for "Environment Variables". Click on that and notice the list called "System Variables". In that list will be one called 'Path'.

To the value of Path, add:

C:\MinGW\bin

Make sure all the paths are separated with semicolons. Once you have added to the path and saved it, you might need to reboot Windows to load the new system path.





Building and installing Boost:

Unzip the boost sources you downloaded above directly at the root of your system drive.

You should get a folder that looks like:

C:\boost_1_53_0

Open the Windows command shell (not MinGW shell) and change the working directory to:

C:\boost_1_53_0\tools\build\v2\engine

From there issue this command at the prompt:

build mingw

When it's done, it will have created a special compiler for Boost C++ called bjam.


In a file browser, navigate to:

C:\boost_1_53_0\tools\build\v2\engine\bin.ntx86

Select and cut b2.exe and bjam.exe and paste them here:

C:\boost_1_53_0\



In the Windows command shell, change directory to:

C:\boost_1_53_0\

and issue the command

bjam --toolset=gcc link=static threading=single stage

and hit [Enter]. This can take a very long time!



When it's done, browse to this directory:

C:\boost_1_53_0\stage\lib

and cut or copy everything there and paste it here:

C:\MinGW\lib


Then browse to:

C:\boost_1_53_0

and copy the whole 'boost' folder

C:\boost_1_53_0\boost

This is to be copied or moved in whole to:

C:\MinGW\include

When this operation is done there should be a folder named

C:\MinGW\include\boost

with all kinds of folders and *.h files in it.


At this point, you do not need anything in the folder

C:\boost_1_53_0

So you can delete the whole thing if you want.



INSTALL Dev-C++ editor:

Run the Dev-C++ 5.0 beta 9.2 (4.9.9.2) installation file that you downloaded previously

Go with a full installation. Let it put itself in

C:\Dev-Cpp\

The first time you run Dev-C++ it will probably tell you it cannot find 'make', but it found the MinGW version of make. That's fine!


Once Dev-C++ is installed and opened at least once, you should be able to double click on LaserBoy.dev and open the LaserBoy project in Dev-C++, ready to examine, edit and compile.

When in Dev-C++,

[Ctrl] + F9

Is the keyboard shortcut to build the whole project.

If for some reason Dev-C++ cannot find the resources it needs from MinGW, from the Dev-C++ editing window, look in

Tools
    Compiler Options
        Directories [tab]

Within that dialog box make sure of the following:

Binaries
    C:\MinGW\bin

Libraries
    C:\MinGW\lib

C Includes
    C:\MinGW\include

C++ Includes
    C:\MinGW\include

Note: If the LaserBoy application is running when you try to link the executable, the linker will fail.

15
Lasers / Spencer's Projector
« on: January 11, 2013, 05:26:22 pm »

Hey everyone! This is kind of a LaserBoy specific carry over from the PL thread about the Specer's Gifts Laser Projector and the idea to use a LaserBoy frame set effect to correct for mis drawn images as a result of bad firmware in the internal DAC of that projector.

http://www.photonlexicon.com/forums/showthread.php/18298-Laser-Projector-(Red-Green-Purple)-quot-Laser-3D-Party-Light-quot-from-Spencer-s

I post it here because the LaserBoy Forum has a text "code" format widget that does not mangle C/C++ code! :)

Copy this and paste it into the file LaserBoy_frame_set_effects.cpp. Scroll down to the bottom of the file and register this function's name like all the others and compile!

Code: [Select]
//############################################################################
// NOTE: The frame set effect named "spencer" is for the specific purpose of creating
// an invalid form of the ILDA file format in an attept to correct the behaviour
// of a specific laser projector that is known to have a built in DAC with bad firmware!
// It is NOT intended to produce any valuable special effect for any other purpose!
//############################################################################
int spencer(LaserBoy_frame_set* p_frame_set)
{
    bool                in_blank = false;
    int                 frame_count,
                        vertex_count;
    LaserBoy_frame      frame(p_frame_set->p_space);
    LaserBoy_frame_set  out  (p_frame_set->p_space);
    //------------------------------------------------------------------------
    for(frame_count = 0; frame_count < p_frame_set->number_of_frames(); frame_count++)
    {
        if(p_frame_set->at(frame_count).number_of_vertices() >= 2)
        {
            frame += p_frame_set->at(frame_count).at(0);
            for(vertex_count = 0; vertex_count < p_frame_set->at(frame_count).number_of_vertices() - 1; vertex_count++)
            {
                frame += p_frame_set->at(frame_count).at(vertex_count);
                frame.back().r = p_frame_set->at(frame_count).at(vertex_count + 1).r;
                frame.back().g = p_frame_set->at(frame_count).at(vertex_count + 1).g;
                frame.back().b = p_frame_set->at(frame_count).at(vertex_count + 1).b;
                frame.back().c = p_frame_set->at(frame_count).at(vertex_count + 1).c;
                frame.back().k = p_frame_set->at(frame_count).at(vertex_count + 1).k;
               
                if(    p_frame_set->at(frame_count).at(vertex_count + 1).is_blank()
                       // if the next vrtx (not added yet) is blank
                    && in_blank == false // we're not already in blank
                  )
                {
                    in_blank = true; // we're now in a blank
                    frame += p_frame_set->at(frame_count).at(vertex_count + 1); // add the next vrtx
                    frame.back().unblank(); // unblank it
                    // it will be added again as a blank in the next itteration of the for loop.
                }
                else if(p_frame_set->at(frame_count).at(vertex_count + 1).is_lit())
                // we're out of blank
                {
                    in_blank = false;
                }
            }
            frame += p_frame_set->at(frame_count).back(); // double the last vrtx
            frame += p_frame_set->at(frame_count).back(); // save_as_ild handles setting the last vrtx bit.
        }
        out += frame;
        frame.clear();
    }
    //------------------------------------------------------------------------
    out.save_as_ild(LASERBOY_ILD_SHARE + "spencer.spn");
    return LASERBOY_OK;
}

//############################################################################


James.  :)

Pages: [1] 2 3 ... 12
SMF spam blocked by CleanTalk
SimplePortal 2.3.7 © 2008-2022, SimplePortal