Polymorph
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Subtitle |
| |
Alternative Title |
| |
Title of Series | ||
Number of Parts | 611 | |
Author | ||
License | CC Attribution 2.0 Belgium: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/42266 (DOI) | |
Publisher | ||
Release Date | ||
Language | ||
Production Year | 2017 |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
FOSDEM 2017385 / 611
10
14
15
16
17
21
22
24
25
27
31
36
40
42
46
50
55
56
63
70
73
78
84
94
101
102
104
107
108
109
110
111
112
113
114
115
117
119
122
123
126
127
128
130
131
132
135
136
137
138
141
142
144
145
146
150
151
157
158
159
160
162
163
164
166
170
171
173
175
176
177
179
181
184
187
189
191
193
194
199
200
205
207
208
209
211
214
218
219
222
223
224
225
226
229
230
232
234
236
237
238
239
245
248
249
250
251
253
255
257
258
259
260
261
264
265
266
267
268
271
272
275
277
279
280
282
283
284
287
288
290
292
293
297
302
304
305
306
307
309
310
311
312
313
314
316
317
318
319
321
322
327
329
330
331
333
336
338
339
340
341
346
348
349
350
352
354
356
358
362
363
364
367
371
372
373
375
380
384
385
386
387
388
389
390
391
392
393
394
395
398
400
401
402
405
407
409
411
412
413
416
417
418
420
424
425
427
428
429
431
435
438
439
440
441
443
444
446
448
454
459
460
461
462
465
466
468
471
473
477
478
480
483
487
488
489
491
495
498
499
500
501
502
503
504
507
508
510
511
512
514
518
519
520
522
524
526
528
530
531
533
535
536
549
550
554
555
558
560
563
564
573
575
578
579
582
585
586
588
589
590
591
592
593
594
595
596
600
603
604
605
609
00:00
Polymorphism (materials science)Game theoryInteractive televisionVideoconferencingMereologyPhysical system1 (number)Projective planeSoftware developerVideo gameInteractive televisionAvatar (2009 film)Right angleGame controllerTablet computerVideo gameBitComputing platformData miningLevel (video gaming)Sound effectReal-time operating systemGroup actionVideoconferencingPolymorphism (materials science)
02:57
Installation artMereologyReal-time operating systemRow (database)VideoconferencingMultiplication signProjective planeDigitizingHypermedia
03:29
Universe (mathematics)Physical systemProjective planeAngleAreaSoftware developerAvatar (2009 film)Bit1 (number)Game theoryMusical ensembleDifferent (Kate Ryan album)Computer animation
04:46
Revision control1 (number)Process (computing)Pairwise comparisonBitGame theoryOpen setFile formatCodePoint (geometry)Replication (computing)Complex (psychology)Power (physics)Library (computing)View (database)CuboidOpen sourceProjective planeGraphics processing unitRevision controlEngineering physicsGraphical user interfaceMultiplication signElectronic program guideMathematicsTouchscreenAxiom of choiceText editorPhysical systemCalculationPolymorphism (materials science)Link (knot theory)CodeGame controllerData managementSoftware frameworkState of matterJava appletCartesian coordinate systemIntegrated development environmentOrder (biology)SineMusical ensembleData storage deviceNonlinear systemGroup actionInteractive televisionDemoscenePlastikkarteSpecial unitary groupTime zoneMultiplicationAvatar (2009 film)MereologyArtistic renderingComputer programmingProgram flowchart
11:32
Polymorphism (materials science)Content (media)Installation artScripting languageSoftware testingObject (grammar)RadiusDifferent (Kate Ryan album)Cartesian coordinate systemEngineering physicsProjective planeMoment (mathematics)Revision controlPhysical systemGame theoryData managementMultilaterationParsingBitMusical ensembleCodeFile formatData miningWindowPolymorphism (materials science)Mixed realitySoftware developerTheoryMultiplication signPosition operatorCuboidLink (knot theory)Order (biology)Greatest elementNP-hardCubeDemo (music)PhysicalismDescriptive statisticsDemosceneIntegrated development environmentInformationTheory of relativityScripting languageLine (geometry)TunisTransformation (genetics)
18:18
Maxima and minimaExecution unitGamma functionHill differential equationAnnulus (mathematics)Vulnerability (computing)VacuumWindowInclusion mapEmailMotion blurMathematicsVolume (thermodynamics)Multiplication signCubePosition operatorMusical ensembleSocial classDistanceComplete metric spaceTrailFerry CorstenJava appletShader <Informatik>Real-time operating systemScripting languageProjective planeEngineering physicsInformation1 (number)Translation (relic)Pattern languageRotationScaling (geometry)Envelope (mathematics)Patch (Unix)Object (grammar)Game theoryAsynchronous Transfer ModeAdditionVariable (mathematics)BitMappingTransformation (genetics)EvoluteTheory of relativitySound effectINTEGRALSkeleton (computer programming)Natural numberWeb 2.0Data structureCompilation albumSphereVideo gameDemo (music)Keyboard shortcutPolymorphism (materials science)PhysicalismGoodness of fitComputer animation
25:03
Core dumpComputer animation
Transcript: English(auto-generated)
00:24
Hello to everybody, I'm here today to present you Polymorph, Libre video game platform. Just to start, to narrow a bit what we're doing in Polymorph, the idea is to produce video games, interactive experiments, and live performance.
00:48
We are a group of people working on this. The crew, just to mention them, because they are important, Julien and I started the Polymorph project six months ago.
01:05
Peter Ehrman and Balthazar are two developers, and Louise joined us and she's a choreographer and a Blender artist. So the background of the project, just to explain you a bit what I have in mind when I say interactive experiments and live performance.
01:29
This project is called Tanooki's, and it's a performance in which the avatar is a puppet and I play with it in real time.
01:41
A friend of mine, Loic, is doing the music, and so we perform on stage. So it's mocap played in real time, and then I activate effects and this kind of thing. I'm just going to skip a bit of it. So there are sounds, this is the sound of Loic, it's quite important.
02:04
So when I'm talking about experimenting with video game technologies, it's to this kind of thing that I'm thinking. So in this project I've worked a lot on the animation part, and I've recorded, I did a new motion system in Unity.
02:34
So all the things that animate the avatar are a custom animation engine. On the right you see that it's controlled via...
02:49
So it's controlled by a MIDI controller and apps, so via a tablet. Another part of the project was to work on an interactive installation involving a dancer,
03:05
so this time real time without any recording. And this is a video of a residency that has been made in Imal, it's a center for digital art in Brussels.
03:22
And for this it's a research I started at NuméDR, it's a research lab linked to the University of Mons. And the idea is to have a mocap system made of kinects, so we have four kinects merged together and providing the animation data to the avatar.
03:45
As you see it's not yet perfect, it's glitching a bit, but it starts to work. Yeah, not just a bit.
04:02
It's still under development. And just to skip a bit and show you that it's working also with several people in the room, so the idea of mixing several kinects together enables us to do this kind of thing. So we have a bigger area covered by the kinects, and we are also able to see people from different angles.
04:30
So working on this project is two or three years I'm working on it. The main thing I didn't do in this project is the game engine itself, and I was using Unity.
04:46
And so because I had some problem with it, I started to think about it. But I first have to present you the tools that I'm using before, and that has influenced the way I did the Polymorph engine.
05:04
So I'm coming from creative coding. I don't know if several of you know processing or open framework and this kind of stuff. So it's mainly text-based frameworks, simplified, really easy to get into. So I started with processing. It's an IDE with Java.
05:25
I use Blender a lot also. I made some experimentation with QT. And I worked a lot also with open framework, with C++ framework, and it's a thin layer above OpenGL.
05:43
So it's very good. It does a lot of things. But when you come to 3D games or more complex scenes, it doesn't do the job correctly. It's not powerful enough. So during two years, I started a quest.
06:02
And the first thing I tried, as you saw, was Unity. And I'm starting a bit of a comparison here. Unity looks a bit like the replicator in my point of view. It's very nice. The design, everything is perfect. You have nice buttons at the top. It's very easy to use.
06:21
And you can print nice stuff with it. But you cannot open the box. And I need to have access to the code, especially for the animation or to plug different libraries. It was too closed for me. So I tried another one, the Unreal Engine. It's open source. The license forbids you to do things.
06:45
But it was a good engine, an industrial one. And related to the power of the engine is the complexity of the engine. And I didn't want to start learning an engine for one year before doing something.
07:04
I wanted to go a bit faster than that. So it forced me to re-evaluate my needs and what I expected. And this is what I was searching for, in fact. It was different libraries with a guide to put them together.
07:20
And the ability also to make it evolve with the time. So change piece, for instance, the physical engine. I want to be able to plug another one if I need to. Change the sound engine, put whatever I want. And make tailor-made game engine, depending on the project I'm working on.
07:42
So choosing which piece I put together. So I made a bit of research. And I ended up by selecting these tools. So the PureData, I was using it for two years. So it was quite directly in the pipe.
08:01
It can do graphical interface. It can do real-time calculation. And it can do sounds, obviously, also. So it was directly in the pot. Augur has been a bit more difficult to find. Because it was shortlisted with Erlicht.
08:21
I don't know if some of you know this engine. So it's an open source rendering engine, also. But when I looked at the specs and the community behind, Augur seems a better choice. Because there was much more things already prepared in Augur.
08:41
And in June last year, they were releasing the version 2 of the engine. So it was, it seems to me, a good choice. I wanted a physical engine into it. So I shortlisted the bullet, also. Because it's very well documented and easy to use.
09:02
And several other tools. So on the top of the screen is everything that I didn't do myself. And in the lower part, in house, it's everything that comes from the project that I did before. Like, this is the animation engine for the avatar.
09:24
That's coming from Tanuki. The multi-connect system that I talked about, also. And the mental player with the mental editor. It's a non-linear timeline editor. Done by Yasin Septi, who is there. He's working actively on it for several years.
09:41
And it allows you to really manage the timing of an interaction. Of whatever you want. And to make transition between them. So, I showed, I said to everybody that I was going to do the project in June. So in July, I started coding.
10:01
And because I did open framework before, and with kind of programming, I was thinking, yeah, okay, Org will not be a huge issue. And, yeah, that was not so easy. It took me about two months to really get into Org.
10:22
To get how it was working, all the layers and all the managers inside of it. And the idea of the Polymorph engine is to avoid you this state of mind. And provide you something a bit more easy to use. So, now, nowadays, we are at version 0.1.
10:42
I'm not taking too much risk here. It's really the first version. It's still really a pack of code. Not everything is debugged. Not everything is done to synchronize everything. But at least when you download the engine, you will get this. You will get Org. Bullet linked to Org.
11:02
You will get a workbook for pure data. A link to SDL to send the sound to the graphical card. To the sound card, sorry. The gamepad things, etc. It was not included into Org. You get open source OSC. Open Sound Control.
11:21
So, it's a UDP warper that allows you to communicate between many applications. I don't know if some of you knows about it. But it's quite common in creative coding and in live performance, this format. XML is there not because I can parse XML.
11:40
It's quite straightforward to parse XML. But because I provide with the package a way to describe scenes and projects in XML. Org doesn't give you any kind of external scene description format. So, I will show you after that how it's done.
12:02
And several assets. But the important thing about Polymorph is that I try to make it simple. So, here what I'll show you is the way to... I want to create a cube and to add physics to it.
12:20
And this is the kind of code you have to write in Org to get it ranking. So, you get nodes, you get entities, you get to link them together. You have to load AABB, so it's bounding box. You have to set the material on the cube, etc. And after that, here at the bottom, it's everything to prepare the relation with bullet.
12:43
And get back the information from the physical engine to your object, etc. So, this is what is behind. And here is what it gives when you're using Polymorph engine. So, you just create a P node.
13:01
So, everything is perfect by P. So, you create a P node. You say it's a cube, and you can add the scene manager and its name. And then you can declare it has the physics of the box. So, I think it's quite straightforward to use. And the line below, the XML, is the same thing but in XML format.
13:25
And you can load it into your application and directly have the object preconfigured for you. You have questions about it? No. So, what's inside the package?
13:40
So, first of all, a simplified API. I have an empty project. I think it's quite important to have an empty project. You can just copy-paste and start coding into it and to discover and to test things. Simple examples also, showing you different features of Augur, of PD, and how to make them communicate.
14:04
Augur-ready assets. So, Augur came with a whole system of shader management and compositor management. This is also available in the examples. Blender files, documentation, etc.
14:20
About the OS, I'm working on Linux. So, for the moment, you can install quite easily via one script, the whole engine on Linux. Windows, a friend of mine is working on it.
14:40
Oh yeah, that's my battery. For OS 6, it will come a bit later. Augur is working on an OS 6 version.
15:05
Once that will be done, I will integrate it, but not before. Oh no. Sorry. About the license, the code is released in the BSD license,
15:22
and all the assets are in creative commons, so you can go and pick what you want inside of it. Sorry. What I had after that... I'll just have to reboot.
15:46
The thing... Something important also is that the engine will evolve with the project we do with it. So it's not like we're going to wait to have a full engine to start building applications.
16:04
It will be a mix between development of the engine and project developments. So, depending on the project we're taking, several features will appear. The first feature, the link with bullets, has been made for a project that I will show you.
16:35
Sorry. Yeah, it's starting.
17:17
I'm going to go back here and directly show you the demo.
17:25
So this is the first project we are working on with the engine. It's called Tuning Score. And the idea here is to work with an American choreographer who is called Lisa Nelson.
17:40
And there is a publication about her work. And this game will demonstrate, will give a 3D version of its theory. So it's a two-player game. You see the position of the other played online.
18:02
So you play with somebody you don't know about. You see what the other is doing and you can interact at the same time in the same physical environment and make the object move, propose transformation on the object, and so on.
18:25
So you can, the two players can pick the same object and play with it in real time. So for those who have made a bit of a physical engine, it's quite tricky to do because the two engines will desynchronize, so it will have to be synchronized all the time via the web.
18:48
So this is the first project. After that I wanted to show you the relation between Pure Data and Polymorph.
19:00
So I prepared to show you the integration. So what you see here is the cube rotating.
19:26
The exposition of the cube makes the pan change and the distance makes the volume change. And this is sent via OSC to Pure Data to allow real-time editing.
19:40
So what you see here is the data retrieved in Pure Data. The position of the cube retrieved in Pure Data. But you can also process information here and send it back to the engine.
20:03
So what I'm doing here is I just make an envelope detection on the sound, scale the sphere and the second cube, and copy the position of the cube and the rotation of the cube, of the big cube on the small one.
20:23
And I can modify this real-time. This is the advent. The pattern, translation. Yeah, no, it's going below. What I'm changing here, the ball is moving in a sinus, with a sin.
20:46
What I'm doing here is I'm putting more. When you have two screens, it's a bit more clear what you're doing. You can also change the mapping of the data between what's org is sending you and what you're putting back in the engine.
21:09
So this is the addition mode. It allows you to really change the behavior of the sound and the behavior of the object via Pure Data.
21:21
And by using custom objects made for this, you can also just run the engine. Sorry, that's not this one. That's this one. You can run the engine with the patch loaded inside the engine without changing anything to the patch.
21:45
So you can really use Pure Data to edit, and then you just have to integrate it and launch it in release mode. After that, I have several little.
22:02
I will just show this one. I'm going fast. This one shows you that you can edit skeletons. You can visualize the structure of the skeleton and play with it in real time.
22:27
This is quite simple. I have another demo about shaders mainly.
22:43
You will see that I can move the objects, change the background effects, and then I control the evolution of the shader. I can enable another one, et cetera, et cetera. So it's a 3D game engine.
23:03
I have many other things, but as the time goes by, do you have any questions? Yeah. I assume this is C++ only. Are you planning on adding any bindings to other languages? I think Lua is a nice scripting language.
23:27
Maybe later, not for now, because there is still a lot to do in C++. Definitely it would be cool, but I didn't do it yet. If I do Augur, there is a binding for Java and Python for Augur, but it has to be integrated.
23:49
The classes I did have to be integrated with that also, so it's not ready yet. Other questions? First of all, it's pretty incredible that you told us that building your own engine would be simpler than mastering one already created.
24:14
And I already used Augur 3D. How did you manage to get good compilation time for file?
24:25
Compilation time? Compilation time. Yeah. The thing I did... Repeat the question. Can you repeat the question? Yeah, yeah. So the first question was about how it can be dumb enough to think that building my own engine will be faster than mastering Unity or Unreal.
24:47
And the second one is about compilation time. So for the first question, I don't think I will do better than Unity or Unreal.
25:02
Not for now or maybe later.