devart-codefactory, 使用代码创建一条艺术

分享于 

9分钟阅读

GitHub

  繁體 雙語
Create a piece of art using code
  • 源代码名称:devart-codefactory
  • 源代码网址:http://www.github.com/postspectacular/devart-codefactory
  • devart-codefactory源代码文档
  • devart-codefactory源代码下载
  • Git URL:
    git://www.github.com/postspectacular/devart-codefactory.git
    Git Clone代码到本地:
    git clone http://www.github.com/postspectacular/devart-codefactory
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/postspectacular/devart-codefactory
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    DevArt ( e ) 工厂

    CodeFactory @ Barbican

    照片信用: Andrew。

    这个项目是由谷歌 & Barbican作为 DevArt的一部分,在的数字革命展上展示的。

    访问 devartcodefactory.com 查看实况项目,了解更多内容,浏览在线画廊并创建你自己的作品。

    这个库包含了January之间创建的所有源代码和相关资产,希望对研究一个完整的非琐碎的clojure/clojurescript项目( 6200 + 位置) 有价值的其他资产。 此外,这个项目作为 thi.ng Collection的各种库的第一个 public realworld用例。 你非常欢迎提交 Bug 补丁补丁,但是这个版本主要是为了教育目的。

    构建这个项目

    MODULE 概述

    该项目使用多个源文件夹来对它的各个模块进行分组:

    /资产

    包含在开发期间创建的草图,屏幕截图,渲染,3d 模型和技术图。 /lcd subdir包含了菊花链液晶显示器的 Fritzing源文件,通过控制。 使用Fritzing生成PCB制作文件。

    /src-cljs

    这个文件夹包含整个前端源代码,用ClojureScript编写。 除了 project.clj 中列出的( 自动下载并自动下载) 之外,它不需要 3rd 方库。 主应用程序和入口点位于 codefactory.app 命名空间中。

    前端是一个单页面应用程序,大量使用了 pub-sub pub总线/机制来处理事件处理和在各个模块之间通信。 每个 MODULE 在本地 Atom 中存储它的状态。 此外,还有一个用于定制 MODULE &路由行为的广泛配置。 有关更多详细信息,请参见 codefactory.config 命名空间。

    应用程序功能的核心是两个库: /geom/geom &/geom/morphogen。 web WebGL的所有功能都由几何 WebGL 提供,而实际形状操作由DSL在geom核心库之上实现。

    /src制作

    This文件夹中包含完整Leiningen项目和生成 3d 模型&渲染场景的源代码,以及用于创建 gallery 446 tablets的physical structure structure gallery的generator structure。 使用作为车床的2D 贝塞尔曲线创建这些结构,然后使用each形状转换 seed Morphogen形状转换,使用与 Web UI相同的8形状操作。 这些结构生成的3D 个STL文件和技术图位于 /assets 文件夹中。

    structure

    panels

    /src-gae

    包含完整的Clojure后台和 wrapper &核心服务的包装器。 主应用程序本身是以标准的环( ) 处理器编写的,使用 Compojure。 AppEngine包装器从过时的应用程序magic项目开始使用一些想法,但最终却有很大的差异,可能会进一步开发。

    后端的核心是一个简单的REST样式 API,它支持JSON和格式,它支持。 每个API处理程序定义了许多在 file: /src-gae/codefactory/config.clj 中定义并通过 。ng/validate 库(。similarily这里库也被前端路由器使用) 定义的确认器。

    使用( e ) 工厂用户界面创建的三维对象仅定义为&存储为抽象语法树( ast )。 但是,作为对象提交过程的一部分,后端生成 3D 个已经上传的代码结构( ast ),并使用 geom SVG MODULE geom previews previews previews scene scene。 照相机,灯光&材质 LuxRender。 只有选中的对象才会收到高清luxrender渲染资产(。在Google计算引擎实例上生成),这将在网站主页上显示。 所有生成的资产都可以通过这些 REST API 处理程序下载:

    curl -X GET http://devartcodefactory.com/api/1.0/objects/{{OBJECT-UUID}}/stl > foo.stl
    curl -X GET http://devartcodefactory.com/api/1.0/objects/{{OBJECT-UUID}}/preview > foo.svg
    curl -X GET http://devartcodefactory.com/api/1.0/objects/{{OBJECT-UUID}}/lux > foo.zip

    SVG渲染 & Luxrendered版本,由 Mathew Boor提交:

    SVG Luxrender
    cell svg rendercell lux render

    下面还举例说明如何使用API下载对象的AST并使用Morphogen来生成一个层网格 file:。

    (nsuser (:require [thi.ng.morphogen.core :as mg]
     [clj-http.client :as http]
     [clojure.edn :as edn]))
    (defbase-url"http://devartcodefactory.com/api/1.0/objects/")
    (defncodefactory-ply-mesh"Downloads AST for given object UUID and saves PLY mesh in project root dir. Note: This example only works for objects with box seeds (for brevity)." [id]
     (let [response (http/get (str base-url id) {:accept"application/edn"})
     body (edn/read-string (:body response))
     ast (get-in body [:body:tree])]
     (mg/save-mesh (mg/seed-box1) ast (str id ".ply"))))
    (codefactory-ply-mesh"788ecd4a-712c-4eee-9014-b1ed99ad6708")

    meshlab

    由 Dianne N 提交的神奇物体,从一个立方体中转换。

    /src-html

    online Barbican gallery的各种HTML文件的源版本,gallery kiosk &工作坊,作为 Google &年轻人的一部分,作为谷歌的创始人 initiative。 每个版本( 主要配置设置) 之间只有微小的差别。 所有开发都应该只与 staging.html 文件一起发生,然后更改应用于它的他的。

    /src

    web webapp使用的所有样式表,使用较少的。 文件 minxins.less 包含各种可以重用的Fragment。

    /src-rpi

    树莓派 源代码,用于控制 python 库照明 & LCD面板显示对象信息的源代码。

    构建要求

    • Google 1.9.8
    • Java 1.7
    • Leiningen 2.4.0
    • Clojure 1.6.0
    • ClojureScript 0.0 -2280
    • lein-cljsbuild 1.0.3
    • NPM 1.4.x
    • Grunt 0.4.x

    在本地运行

    cd devart-codefactory# download & install AppEngine dependencies into local/lib dir./install-dependencies.sh# install grunt dependenciesnpm install# build & compress HTML & CSSgrunt prod# compile ClojureScript/JS applein do cljsbuild clean, cljsbuild once prod# launch AppEngine dev server./launch.sh

    注:install-dependencies.sh 首先使用Leining下载所有必需的依赖项,然后将所需的jar 文件从本地 Maven repo 复制到这里目录中: /war/WEB-INF/lib。它假定本地 Maven repo 缓存( Leiningen使用) 是默认的~/.m2/repository。 如果不是这种情况,请在运行脚本之前先编辑路径。

    然后打开浏览器并导航到 http://localhost:8080/staging/

    如果你最终黑客( 在 /src-cljs 中),并希望( 几乎) 即时自动重新编译,请打开单独的终端并使用 cljsbuild 调用:

    lein do cljsbuild clean, cljsbuild auto dev

    同样,对于 html/less编辑,建议使用 grunt 默认目标,这将对暂存目录进行autocompile更改。

    Google API密钥

    后端为每个提交的片段生成一个唯一的URL,因为uuid的本质不是人类可以读的。 因此,负责API处理程序使用谷歌网址缩短的goo.gl 来创建更短的版本,但是需要一个有效的谷歌API键来完成这。 需要在启动服务器之前将这里密钥插入到 /src-gae/codefactory/config.clj 文件的底部。 你可以运行这个应用程序,但是在这种情况下,你的对象只能通过它们的原始长URL访问。

    许可证

    这个项目的源代码是在 Apache软件许可证 2.0 许可的。

    所有非代码资产都在 Creative Commons属性noncommercial许可下发布。

    © 2014 Karsten施密特


    cod  ART  
    相关文章