Principal Architect for Modeling at DAZ 3D
Feb. 2, 2017

More Related Content

Similar to BEFLIX(20)



  1. Richard Thomson Director, Computer Graphics Museum @CGMuseum
  2. BEFLIX First Publication "A Computer Technique for Producing Animated Movies", Kenneth C. Knowlton AFIPS Conference Proceedings 25 (Spring Joint Computer Conference 1964)
  3. Hardware Environment  IBM 7090 computer  Card keypunch  Card reader  Line printer  Magnetic tape drive  Disc drive  Stromberg-Carlson 4020 microfilm recorder
  4. IBM 7090 Computer  IBM's first transistor based mainframe  First install November, 1959  Typical cost $2.9 million in 1960  Evolution of IBM 709 vacuum tube mainframe  Created for scientific/engineering markets  NASA: Mercury, Gemini and Apollo  JPL: Space Flight Operations Facility  American Airlines: SABRE
  5. IBM 7090 Computer  3 index registers  227 instructions  single-precision floating-point (36-bits)  36-bit words  32,768 words of core memory  2.18 µs memory cycle time  4.36 µs floating-point add time  4.36-30.53 µs floating-point multiply time
  6. IBM 7090 CPU and Memory
  7. IBM 7090
  8. IBM 7090
  9. IBM 7090
  10. Stromberg-Carlson 4020 Microfilm Recorder  Magtape drive for input  Charactron tube for creating image  16mm or 35mm film camera  Character beam can be defocused  Draw grayscale pixels as character blobs
  11. Stromberg-Carlson SC4020
  12. Language  BEFLIX is an Embedded DSL  Embedded ○ Embedded in another language ○ Hosted in FORTRAN II environment ○ Uses FAP (FORTRAN II Assembly Program) macro language constructs  Domain-Specific Language ○ Represent concepts from the problem domain directly
  13. Programming Model  Memory organized into surfaces  Coarse resolution: 126x92  Fine resolution: 252x184  3 bits/pixel  12 pixels/word  Enough memory to hold 2 fine resolution frames
  14. Fine Surface Designators Fine resolution alternatives: AA 252x184 BB 252x184 CC 252x368 VV 252x368
  15. Coarse Surface Designators Coarse resolution alternatives: WW 126x92 XX 126x92 YY 126x92 ZZ 126x92 PP 252x92 OO 378x92 FF 504x92 PP or WW, XX OO or WW, XX, YY FF or WW, XX, YY, ZZ
  16. Coarse Surface Designators Coarse resolution alternatives: WW 126x92 XX 126x92 YY 126x92 ZZ 126x92 TT or YY, ZZ SS or XX, YY, ZZ EE or WW, XX, YY, ZZ EE or AA TT 126x184 SS 126x276 EE 126x368
  17. Scanners  Scanners are named A...Z  Scanners live on a surface  Scanners have:  A coordinate within the surface  A value read from the surface  Manipulate a surface by conditionally performing operations on a scanner or between two scanners
  18. Low Level Operations  Place a scanner at a location on a surface  PLACE sc, surf, x, y  Conditionally perform some operations and jump  IFxxx (c1)...(cN)T(o1)...(oM)label  Evaluate each condition c1...cN  Combine them according to logical predicate xxx  If true, perform operations o1...oM  Optionally jump to label
  19. Low Level Operation Example IFANY (B,R,10)(B,A,C)(A,E,7)T(A,T,B)(A,U,2)(A,W,3)LOC5 If any of the following are true:  scanner B is Right of x=10  scanner B is Above scanner C  scanner A is sitting on a number Equal to 7 Then the following operations are performed:  scanner A moves To the same surface and pixel as scanner B  scanner A moves Up 2 pixels  scanner A Writes the number 3 to its pixel Then control jumps to the label LOC5 in the program.
  20. Scanner Conditions  Conditions are of the form (scnr,rel,quant)  scnr name of the scanner to be tested  rel relation between scanner and quant  quant can be a number or another scanner
  21. Scanner Comparison Relations  Compare scanner position to a value  Compare positions of two scanners  Compare scanner pixel to a value  Compare pixel between scanners
  22. Scanner Move Operations  Move to absolute X or Y coordinate  Move relative along X or Y axis  Move to surface and position of other scanner  Move to X or Y coordinate of another scanner without changing surfaces  Move one square based other scanner's pixel  Scanners wrap around surface boundaries in a helix
  23. Scanner Pixel Operations  Write pixel from value or other scanner's pixel  Write complement of other scanner's pixel  Exchange pixels between two scanners  +, -, *, / between two scanners (modulo 8)  bitwise OR and AND between two scanners
  24. Static and Dynamic Operations  Static operations happen immediately  Dynamic operations occur over multiple frames
  25. High Level Operations  Output control and temporary storage of pictures  Drawing primitives (line, arc, polyline, text)  BitBlt like operations on rectangular areas  Dynamic operations on rectangular areas  Macros using low-level operations
  26. Output Operations CAMERA n FRAMES n FILTER n TABLE n,c0,...,c7 AIM sc SAMPLE n LINES n FILM NOFILM UNTIL n,label RESET n COARSE FINE STORE surf,where RETREV surf,where
  27. Drawing Primitives LINE sc1,sc2,mode,ns,width,speed ARC sc1,ctr,d,mode,ns,w,speed,t1,w1,t2,q2 TRACE lb1,len,sc,orient,mode,ns,width,speed TYPE lb2,sc,size,hspace,vspace,mode,ns lb1 OCT n,(curve to be drawn by TRACE) lb2 BCI n,(text to be drawn by TYPE)
  28. Instant Rectangle Operations PAINT scTR,scBL,mode,ns BORDER scTR,scBL,width,mode,ns SHIFT scTR,scBL,dir,amount ROTATE scTR,scBL,dir,amount[,n] EXPAND scTR,scBL,dir,rep1,rep2 SQUASH scTR,scBL,dir,del,kp COPY scTR,scBL,mode,orient,sc3,sc4[,n] CENTER scTR,scBL GROW scTR,scBL,ns1,ns2,ns3,label SMOOTH scTR,scBL
  29. Dynamic Rectangle Operations DISOLV scTR,scBL,sc3,pat ZOOMIN scTR,scBL,fctr REDUCE scTR,scBL,fctr STRECH scTR,scBL,dir,fctr PRESS scTR,scBL,dir,fctr
  30. The Master Film  The SC2040 produces a master film  Duplicate frames are output only once  A repeat count is written above the frame  Repeated frames are duplicated by optical printing when the film is developed
  31. Workflow 1. Develop program in BEFLIX 2. Preview output samples on printout 3. Run program to create magtape 4. Load magtape into microfilm recorder 5. Produce master film 6. Optical print/expand to create work print
  32. Stan VanDerBeek Artist Stan VanDerBeek collaborated with Ken Knowlton on a series of films:  Poem Field No. 1 (1965)  Poem Field No. 2 (1966)  Poem Field No. 3 (1967)  Poem Field No. 4 (no date)  Poem Field No. 5 (1967)  Poem Field No. 6 (no date)  Poem Field No. 7 (1971)  Poem Field No. 8 (no date)  Collido-Oscope (1966) (VanDerBeek, Knowlton and Bosche)  Man and His World, 1967 (Shown at Expo '67)
  33. Poem Field No. 2 View the Video
  34. Looking Back at BEFLIX  BEFLIX is considered an "esoteric" programming language  Its unique syntax depends on the macro facilities of FAP  Later FORTRAN IV version resembled more traditional subroutine library  First(?) language for procedural animation
  35. Museum Exhibit Futures?  7090 simulation with BEFLIX implementation  No known source to BEFLIX exists?  7090 simulation is boring  7090 real experience was physical  VR exhibit?  BEFLIX IDE  Open source IDE to explore BEFLIX programs  Evolve BEFLIX to a GPU oriented language  Produce procedural moves in real-time