/SenderoServer

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.

Primary LanguageC++MIT LicenseMIT

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