把东西粘在一起——实时CG内容生产中的Scheme

第1章 引入

对于Lisp程序员来说, Lisp用于交互式计算机图形学并不是新鲜事. 实际上, Lisp曾经是做图形学的首选(the)语言. 原因有很多, 但我们认为其中一个原因是, 处理计算机图形学中的数据结构基本上就是动态地调整有向图, 而Lisp在运行时处理图结构方面非常出色.

第2章 舞者项目

第3章 脚本引擎

第4章 生产过程

第5章 Scheme的角色

在整个制作过程中, 我们在各个地方使用了Scheme, 但可以总结为以下几个主题.

第5.1节 作为文件格式的Scheme

(define *shot-lengths* '((3  84) (4  402) (4a 48) (5  36) (6  74)
                         (7  113) (8  72) (9  120) (10 217) (12 120)
                         (13 368) (15 86) (16 128) (18 275) (18a 72)
                         ...))

(define *shot-data*
  (let ((frame 1))
    (map (lambda (len)
           (let ((result (list (car len) frame (+ frame (fps-frame len) -1))))
             (set! frame (+ frame (fps-frame len)))
             result))
         *shot-lengths*)))

(define (get-motions shots file-format-string)
  (define (read-channel file)
    (sqmo-channel-read (sq-complete-filename file)))
  (map (lambda (shot-data)
         (if (memq shot-data shots)
             (create-motion-channel
              (read-channel (format #f file-format-string
                                    (shot-number shot-data)))
              (first-frame shot-data))
             #f))
       *shot-data*))

第5.2节 作为debug工具的Scheme

第5.3节 用Scheme进行快速原型制作

第6章 经验

第7章 未来