Skip to content

C++ project based in OpenFrameworks. The main component of Sendero which is in charge of blending and distributing the lightning patterns that feed the artwork.

License

Notifications You must be signed in to change notification settings

LaboratorioDeMedios/SenderoServer

 
 

Repository files navigation

Sendero

Sendero Server

Sendero Server is the main component of Sendero, developed in C++ with OpenFrameworks. It is in charge of blending and distributing the lighting patterns (generated by Sendero Clients) that feed the artwork.


Installation

OpenFrameworks is a cross-platform tool, but (for now) Sendero Server has only been compiled in Linux.

Ubuntu

  • Download, unpack and install dependecies of OpenFrameworks 0.9.3 through the <OF_dir>/scripts/linux/ubuntu/install_dependencies.sh script of the framework.

    If the gcc >= 5.0.0 (default in latest Ubuntu versions) is installed, make sure you access to recompile Poco libraries when the install_dependencies.sh asks to.

  • Install other needed libraries:

sudo apt-get install opencl-headers liblz4-dev liblapack-dev liblas-dev
  • Install the following OF addons:

  • Clone this repository in <OF_dir>/apps/myApps/ OF subfolder.

  • Compile the project running make Debug.

  • To run Sendero Server execute make RunDebug.


Configuration

Sendero Server's configurations are made in bin/data/serverConf.xml file. The following commented xml file is a fragment of a working Sendero configuration. The entire file can be found in bin/data/serverConf.xml.

<?xml version="1.0" ?>

<!-- The artwork has 90 pixels -->
<Configuration installationName="Pentakis" pixelQuantity="90">

  <!-- Entities that will receive the stream of ArtNet packets -->
  <Devices>
    <Device UDPPort="7777" enabled="1" id="1" ipAddress="localhost" name="Pentakis" type="mBed"/>
  </Devices>

  <!-- Meshes that represent pixels in 3D representation of the artwork  -->
  <Meshes>
    <Mesh name="cylinderShort" path="meshes/cylinderShort100.obj"/>
    <Mesh name="cylinderLong" path="meshes/cylinderLong100.obj"/>
  </Meshes>
  
  <!-- Different led types, so Sendero Server can calibrate each pixel separatedly -->
  <LedTypes>
    <LedType id="0">
      <ColorPair b0="0" b1="0" g0="0" g1="0" r0="255" r1="255"/>
      <ColorPair b0="0" b1="0" g0="255" g1="255" r0="0" r1="0"/>
      <ColorPair b0="255" b1="255" g0="0" g1="0" r0="0" r1="0"/>
    </LedType>
    <LedType id="1">
      <ColorPair b0="0" b1="0" g0="0" g1="0" r0="255" r1="255"/>
      <ColorPair b0="0" b1="0" g0="255" g1="200" r0="0" r1="0"/>
      <ColorPair b0="255" b1="255" g0="0" g1="0" r0="0" r1="0"/>
    </LedType>
  </LedTypes>

  <!-- For each pixel: initial RGB color, device (defined above) receiving it, led type (defined above) that lightens it -->
  <FrameConf>
    <Pixel a="255" b="255" device="1" g="255" id="0" ledType="0" r="255">
      <!-- Mesh name (defined above)  -->
      <Render mesh="cylinderShort">
        <!-- Front, Up, Position coordinates of the pixel in the 3D model -->
        <Front x="-0.0998540000000001" y="0.229397" z="-0.0259085"/>
        <Up x="0.546030364592086" y="0.488412566772085" z="2.22000739347465"/>
        <Position x="55.8648" y="22.9397" z="-43.28855"/>
      </Render>
    </Pixel>
    <Pixel a="255" b="255" device="1" g="255" id="1" ledType="1" r="255">
      <Render mesh="cylinderLong">
        <Front x="0.141775" y="-0.087622" z="0.229397"/>
        <Up x="0.423934187608445" y="0.199571320207026" z="-0.185775887343807"/>
        <Position x="60.0569" y="37.1172" z="-22.9397"/>
      </Render>
    </Pixel>
    .
    .
    .
    <Pixel a="255" b="255" device="1" g="255" id="89" ledType="0" r="255">
      <Render mesh="cylinderShort">
        <Front x="0" y="-0.1676835" z="-0.187476"/>
        <Up x="0.53360247055402" y="0.708328084653321" z="-0.633547400109695"/>
        <Position x="0" y="-57.46605" z="47.1026"/></Render>
    </Pixel>
  </FrameConf>

  <!-- Sendero Clients used -->
  <ClientsProxys>
    <Client TCPPort="5002" UDPPort="5003" blendFactor="0.7" enabled="1" id="1" name="Sound" protocolType="0"/>
    <Client TCPPort="5004" UDPPort="5005" blendFactor="0.5" enabled="1" id="2" name="Interaction" protocolType="0"/>
  </ClientsProxys>
  
  <!-- Sendero Streaming Server address and LZ4 compression availability setting -->
  <StreamServerConfig compression="1" enabled="1" ipAddress="app.sendero.uy" port="8080"/>
  
</Configuration>

For more information about Sendero Project go to the base repository.


Logo designed by flaviarampa@gmail.com & nilsonbarbara@gmail.com

About

C++ project based in OpenFrameworks. The main component of Sendero which is in charge of blending and distributing the lightning patterns that feed the artwork.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 98.9%
  • Other 1.1%