39,59 €
Cinder is one of the most exciting frameworks available for creative coding. It is developed in C++ for increased performance and allows for the fast creation of visually complex, interactive applications."Cinder Creative Coding Cookbook" will show you how to develop interactive and visually dynamic applications using simple-to-follow recipes.You will learn how to use multimedia content, draw generative graphics in 2D and 3D, and animate them in compelling ways. Beginning with creating simple projects with Cinder, you will use multimedia, create animations, and interact with the user.From animation with particles to using video, audio, and images, the reader will gain a broad knowledge of creating applications using Cinder.With recipes that include drawing in 3D, image processing, and sensing and tracking in real-time from camera input, the book will teach you how to develop interesting applications."Cinder Creative Coding Cookbook" will give you the necessary knowledge to start creating projects with Cinder that use animations and advanced visuals.
Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:
Seitenzahl: 314
Veröffentlichungsjahr: 2013
Copyright © 2013 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: May 2013
Production Reference: 1160513
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham B3 2PB, UK.
ISBN 978-1-84951-870-3
www.packtpub.com
Cover Image by Dawid Górny (<[email protected]>)
Authors
Dawid Gorny
Rui Madeira
Reviewers
Vladimir Gusev
Dofl Y. H. Yun
Acquisition Editor
Joanne Fitzpatrick
James Jones
Lead Technical Editor
Dayan Hyames
Technical Editors
Soumya Kanti
Devdutt Kulkarni
Veena Pagare
Project Coordinator
Arshad Sopariwala
Proofreaders
Maria Gould
Paul Hindle
Indexer
Rekha Nair
Production Coordinator
Aditi Gajjar
Prachali Bhiwandkar
Cover Work
Aditi Gajjar
Dawid Gorny is a creative coder and a creative technologist who is into computational design, art, and interaction design.
He has worked as a professional web and Flash developer for several years, then took the lead of the research and development department at a digital production house. He has worked on concepts and technical solutions for a wide variety of interdisciplinary projects involving mobile development, cameras, sensors, custom electronic circuits, motors, augmented reality, and projection mapping. His installations engage people in malls, airports, exhibition spaces, and other public venues.
He is the founder, organizer, and program director of the art+bits festival in Katowice—the encounter of art and technology.
You can find a more about his projects and experiments at http://www.dawidgorny.com
Rui Madeira is a computational designer, educator, and founder of the interaction design studio Estudio Ruim. He has been exploring and creating unique and engaging interactive experiences for cultural, artistic, and commercial purposes. His works are born from the intersection of several disciplines including illustration, animation, and interaction design. By using programming languages as the main building blocks for his works, he builds specific and adaptive systems that break apart from the limitations of traditional tools. He has participated in several projects, both collaborative and solo, including interactive performances and concerts, generative visuals for print and motion graphics, mobile applications, interactive installations, and video mapping.
He has collaborated for several institutions including the London College of Fashion, Belém Cultural Center, Pavillion of Knowledge, Portuguese Foundation of Communications, Moda Lisboa, National Ballet of Portugal, and the Monstra Animation Festival
Vladimir Gusev is a scientist turned generative graphics stage designer and producer. Vladimir Gusev received his Ph.D. from the Russian Academy of Sciences, and continued scientific research in the Ukraine (Kiev Polytechnic Institute) and the USA (Yale University). His main interest was computer molecular simulations, which led him into industrial bioinformatics and software development (molecular visualization and visual languages and platforms). His latest interest lies in theatre multimedia environments, which resulted in the production of works at the Budapest Summer Festival (Aida by G. Verdi), Anton Chekhov Moscow Art Theatre, Petr Fomenko Theatre Workshop (Moscow), and Satyricon (Moscow). He also co-founded the One Way Theater Company in New York City. Two theatrical productions with Vladimir's engagements as a videographer were nominated for the National Golden Mask Awards.
Some of the respectable institutions with which he collaborated are: The Institute of Physical Chemistry, Kiev Polytechnic Institute, Yale University, TRI/Princeton, Curagen Corporation, GraphLogic (Co-founder), Streambase, Ab Initio, Conde Nast, and One Way Theater Company.
He has also been a reviewer of several international journals on physical chemistry.
I would like to thank the creators of the wonderful Cinder framework.
Dofl Y.H. Yun is an interactive technologist with over 12 years of development experience, and he has established himself as a visionary leader in interactive design in South Korea, Hong Kong, the United Kingdom, and more recently in the USA. Much of his focus is on technologies such as computer vision, 3D depth camera sensors, and multitouch applications.
Dofl received his MA degree in Interactive Media from the London College of Communication, University of the Arts London with a thesis entitled: "Ensemble‑Interactive Musical Instruments." His MA thesis won the Experimental/Art category at the Flashforward Film Festival 2008 in San Francisco.
Since August 2009 he has been working for Firstborn, a digital agency in New York City. His recent work focuses on exploring the intersection between physical space and interaction design.
I want to especially mention the efforts of Cinder's original author and current lead architect, Andrew Bell, and would like to thank my family for their support and my friends from the CinderDome community.
You might want to visit www.PacktPub.com for support files and downloads related to your book.
Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at <[email protected]> for more details.
At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.
http://PacktLib.PacktPub.com
Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can access, read and search across Packt's entire library of books.
If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view nine entirely free books. Simply use your login credentials for immediate access.
Cinder is one of the most exciting frameworks available for creative coding. It is developed in C++ for increased performance and allows for the fast creation of visually complex and interactive applications. The big advantage of Cinder is that it can target many platforms such as Mac, Windows, and iOS with the exact same code.
Cinder Creative Coding Cookbook will show you how to develop interactive and visually dynamic applications using simple-to-follow recipes.
You will learn how to use multimedia content, draw generative graphics in 2D and 3D, and animate them in compelling ways.
Beginning with creating simple projects with Cinder, you will use multimedia, create animations, and interact with the user.
From animation with particles to using video, audio, and images, the reader will gain a broad knowledge of creating creative applications using Cinder.
With recipes that include drawing in 3D, image processing, and sensing and tracking in real-time from camera input, this book will teach you how to develop interactive applications that can be run on a desktop computer, mobile device, or be a part of an interactive installation.
This book will give you the necessary knowledge to start creating projects with Cinder that use animations and advanced visuals.
Chapter 1, Getting Started, teaches you the fundamentals of creating applications using Cinder.
Chapter 2, Preparing for Development, introduces several simple recipes that can be very useful during the development process.
Chapter 3, Using Image Processing Techniques, consists of examples of using image processing techniques implemented in Cinder and using third-party libraries.
Chapter 4, Using Multimedia Content, teaches us how to load, manipulate, display, save, and share videos, graphics, and mesh data.
Chapter 5, Building Particle Systems, explains how to create and animate particles using popular and versatile physics algorithms.
Chapter 6, Rendering and Texturing Particle Systems, teaches us how to render and apply textures to our particles in order to make them more appealing.
Chapter 7, Using 2D Graphics, is about how to work and draw with 2D graphics using the OpenGL and built-in Cinder tools.
Chapter 8, Using 3D Graphics, goes through the basics of creating graphics in 3D using OpenGL and some useful wrappers that Cinder includes in some advanced OpenGL features.
Chapter 9, Adding Animation, presents the techniques of animating 2D and 3D objects. We will also introduce Cinder's features in this field such as Timeline and math functions.
Chapter 10, Interacting with the User, creates the graphical objects that react to the user using both mouse and touch interaction. It also teaches us how to create simple graphical interfaces that have their own events for greater flexibility, and integrate with the popular physics library Bullet Physics.
Chapter 11, Sensing and Tracking Input from the Camera, explains how to receive and process data from input devices such as a camera or a Microsoft Kinect sensor.
Chapter 12, Using Audio Input and Output, is about generating sound with the examples, where sound is generated on object's collision in physics simulation. We will present examples of visualizing sound with audio reactive animations.
Appendix, Integrating with Bullet Physics, will help us learn how to integrate Bullet Physics library with Cinder.
This chapter is available as a downloadable file at: http://www.packtpub.com/sites/default/files/downloads/Integrating_with_Bullet_Physics.pdf
Mac OS X or Windows operating system. Mac users will need XCode, which is available free from Apple and iOS SDK, if they wish to use iOS recipes. Windows users will need Visual C++ 2010. Express Edition is available for free. Windows users will also need Windows Platform SDK installed. While writing this book the latest release of Cinder was 0.8.4.
This book is for C++ developers who want to start or already began using Cinder for building creative applications. This book is easy to follow for developers who use other creative coding frameworks and want to try Cinder.
The reader is expected to have basic knowledge of C++ programming language.
In this book, you will find a number of styles of text that distinguish between different kinds of information. Here are some examples of these styles, and an explanation of their meaning.
Code words in text are shown as follows: "We can include other contexts through the use of the include directive."
A block of code is set as follows:
Any command-line input or output is written as follows:
New terms and important words are shown in bold. Words that you see on the screen, in menus or dialog boxes for example, appear in the text like this: "clicking the Next button moves you to the next screen".
Warnings or important notes appear in a box like this.
Tips and tricks appear like this.
Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of.
To send us general feedback, simply send an e-mail to <[email protected]>, and mention the book title via the subject of your message.
If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.packtpub.com/authors.
Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.
You can download the example code files for all Packt books you have purchased from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.
Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you would report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/submit-errata, selecting your book, clicking on the erratasubmissionform link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded on our website, or added to any list of existing errata, under the Errata section of that title. Any existing errata can be viewed by selecting your title from http://www.packtpub.com/support.
Piracy of copyright material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works, in any form, on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.
Please contact us at <[email protected]> with a link to the suspected pirated material.
We appreciate your help in protecting our authors, and our ability to bring you valuable content.
You can contact us at <[email protected]> if you are having a problem with any aspect of the book, and we will do our best to address it.
In this chapter we will cover:
In this chapter we'll learn the fundamentals of creating applications using Cinder.
We'll start by creating different types of applications on the different platforms that Cinder supports using a powerful tool called TinderBox.
We'll cover the basic structure of an application and see how to respond to user input events.
Finally, we will learn how to use resources on Windows and Mac.
In this recipe, we'll learn how to create a project for a basic desktop application for Windows and Mac OSX.
Projects can be created using a powerful tool called TinderBox. TinderBox comes bundled in your Cinder download and contains templates for creating projects for different applications for both Microsoft Visual C++ 2010 and OSX Xcode.
To find Tinderbox, go to your Cinder folder, inside which you will find a folder named tools with, TinderBox application in it.
The first time you open TinderBox, you'll be asked to specify the folder where you installed Cinder. You'll need to do this only the first time you open TinderBox. If you need to redefine the location of Cinder installation, you can do so by selecting the File menu and then Preferences on Windows or selecting the TinderBox menu and then Preferences on OS X.
We'll use TinderBox, a utility tool that comes bundled with Cinder that allows for the easy creation of projects. Perform the following steps to create a project for a basic application:
TinderBox will create the selected projects for the chosen platforms (Visual C++ 2010 and OS X Xcode) and create references to the compiled Cinder library. It will also create the application's class as a subclass of ci::app::AppBasic. It will also create some sample code with a basic example to help you get started.
Your project name and naming prefix will be, by default, the name of the folder in which the project is being created. You can edit this if you want, but always make sure both Project Name and Naming Prefix fields do not have spaces as you might get errors.
The naming prefix will be used to name your application's class by adding the App suffix. For example, if you set your Naming Prefix field as MyCinderTest, your application's class will be MyCinderTestApp.
In this recipe, we will learn how to create a project for a desktop screensaver for both Windows and Mac OS X.
To get ready with TinderBox, please refer to the Getting ready section of the previous Creating a project for a basic application recipe.
We'll use TinderBox, a utility tool that comes bundled with Cinder that allows easy creation of projects. Perform the following steps to create a project for a screensaver application:
TinderBox will create both a project for you and link it against the compiled Cinder library. It will also create the application's class and make it a subclass of ci::app::AppScreenSaver, which is the class with all the basic functionality for a screensaver application. It will also create some sample code with a basic example to help you get started.
In this recipe, we'll learn how to create a project for an application that runs on iOS devices such as iPhone and iPad.
To get ready with TinderBox, please refer to the Getting ready section of the Creating a project for a basic application recipe.
Please note that the iOS touch application will only work on iOS devices such as iPhones and iPads, and that the projects created with TinderBox will be for OSX Xcode only.
We'll use TinderBox, a utility tool that comes bundled with Cinder that allows easy creation of projects. Perform the following steps to create a project for an iOS touch application:
TinderBox will create an OS X Xcode project and create the references to link against the compiled Cinder library. It will also create the application's class as a subclass of ci::app::AppCocoaTouch, which is the class with all the basic functionality for a screensaver application. It will also create some sample code with a basic example to help you get started.
This application is built on top of Apple's Cocoa Touch framework to create iOS applications.
A Cinder application can respond to key events through several callbacks.
The available callbacks that get called by keyboard interaction are listed in the following table:
Method
Usage
keyDown
