WWDC1997 Session 306

Transcript

Kind: captions Language: en thank everybody for coming my name is David Harrington I'm the newest addition of the quick-draw l3d team on the new EEGs Angeles working in conjunction with Shan Hopwood who's the senior product manager for quick-draw 3d to start off this morning we'd like to give you a quick overview of what we've done since the last Worldwide Developers Conference in November of this past year really quick draw 3d 1.5 and with the release of contacts we actually won best of show we've really added a lot of the new additional functionality with quick draw 3d 1.5 including plug in rendering support plug-in group support and it's also the first version which is truly across platform implementation shipping both the Mac version and the Windows version is simultaneous release with a common code base so if you implemented there have implemented a Macintosh application it should be very easy to implement on the Windows PC side we also use native Windows NT services and we'll actually talk about those services a little bit later on in the presentation as application vendors is really several different ways that we can implement quick draw 3d inside of your application if you have an existing 2d applications such as Adobe Photoshop or say you can implement just the viewer view or light import and manipulate 3d m-f objects inside of your application so it's a great way to go and add a new data type to your existing product for the game vendors out there who already have existing graphics libraries we can also implement it the rave level basically Ravus or hardware abstraction layer allowing your games to take benefit of apples or third parties hardware acceleration or if you're looking to get geometries you're looking to get plug-in rendering support you're looking to get 3d method 3d in that file format support you can implement our entire core library so there's really a wide variety of levels that you can adopt apples quick-draw 3d technology throughout the day we'll be showing you demonstrations of each one of these and the performance that it can provide one of the newest additions to quick l3 1.5 is plug in rendering support we're actually gonna have several demonstrations a little later on in the day showing you products both by Lightworks as well as thank fish technologies really extending the capabilities and render and support the Cottrell 3d provides out-of-the-box Apple provides both wireframe window and interactive a render where light works and thanks this for providing really a lot of additional options including ray-tracing high quality rendering cartoon rendering bead print rendering once again we'll see several examples and demonstrations throughout the presentation we also see a wide variety of third-party accelerator vendors stepping on board to really back quick-draw 3d at the top we have a wide variety of chip makers including 3d labs 3d FX s Moss API as well as several finished product boards some of those boards include boards from ATI 3dfx is looking at working with third parties release new products as well as radius at the high end of the product line with the Thunderer 3d card with that I'd like to invite both Debby and Scott from 3dfx to come up and give a quick demonstration about the power and flexibility which their chipset provides so Debbie and Scott from 3dfx thank you very much I'm Debbie Chen with developer relations at 3d effects interactive and this is Scott Alden who's with our developer support team we'd like to thank Apple for letting us spend a few minutes with you today we are a graphic semiconductor company that was founded on the premise that software not hardware would drive our growth entertainment software specifically Gein software is arguably among the most graphics-intensive of all software applications and traditionally had to be written and licensed to closed hardware systems such as a coin op box that you see in the arcades or a game console by providing a scalable graphics architecture to link the different entertainment markets such as the arcade and the home computer markets we enable our developers to debut games in one market and in a straightforward manner redeploy or reexpress that content to another to another platform because they have a common common hardware platform that is PCI bus Bay and a common graphics target - right - has this been done before moving from say the arcade market to the home computer certainly and we've seen it over and over again and that's what is that's what's exciting to gamers it is that you can go to the arcade and play a new game and then bring it into the home later for a different kind of experience typically but what's different today is that these developers can now put more energy and creativity into tailoring the gameplay and the the levels for the home say rather than spending their time on wrestling with hardware and API porting or moving their rendering engine from one target hardware to the other and this results in a number of benefits including reduced cost to the developer preserving the quality of the title so that it looks it looks the same or similar in the home as it does in the arcade and we believe results in a greater volume of content now that it can flow more freely between the different segments of the market which in the end is what the gamer is what the gamer wants developers in fact helped us design our first product which is Voodoo graphics as well as the new Voodoo rush graphics chipset they told us they wanted powerful graphics with no compromise in performance they wanted to be able to use all of the features that you would expect in a full high performance 3d system including features such as mipmapping z-buffer alpha blending bilinear or more advanced filtering and all of this in one system that would run in a sustained 30 frames a second which is really what we look for for an interactive feel in a game or in other types of software and all of this of course at prices that are affordable to consumers have we succeeded we'll let others speak for us computer gaming world recently awarded us their 1997 product of the year if you serve to next generations game sight one of the most heavily trafficked game sites which a lot of you probably know you'll see that their recent poll showed that more readers own a 3d effects baseboard than and all others combined so there's a lot of data out there but perhaps what's most important to you as software developers is of course access to robust stable api's and drivers nearest and dearest share hearts we absolutely support quick-draw 3d are develop our drivers today are in early beta and you can contact us to get access to those and we do support the other industry API is listed here for your information for those of you for whom this was your first introduction to 3d effects Glide happens to be our own low-level rasterization library it's not an API by any means but is used often by coin-op developers and other game developers who already have written their own rendering engines this spretz of drivers and api is what enables developers in these diverse markets from scientific visualization to the arcade to the home computer game developers to access the power of the hardware and really enhance the experience that their customers and your users get a couple quick points and then we'll kind of get to the beef which is the demos we are working together with Apple to bringing this technology Apple and their licensees rely heavily on your feedback and we ask you to based on what you see today to contact them and be vocal about how you think this would enhance your business and enhance your users experience we are partnering actively with mac game developers and publishers such as interplay and GT interactive to bring more high-quality games to the Mac as an aside we also would invite everyone here to stop in to the games area in the cyber cafe where we have GL quake running on a 3d sx3 SX board in a power computing system we are also actively looking to work with developers who are doing 3d content of all types 3d applications of all types such as Internet author into 'ls and web browsers anything that you can think of if it's 3d and pushes the limits of what 3d and quick-draw can do we are looking to work with you so please contact us any of the methods you see here serve to our website and there's a lot more information lists of current games are available there and we know that the best way to evaluate what you see here today is to really experience the experience the technology so I'm happy to introduce Scott who will show you what we call the magic of Voodoo okay what I've got here is one of our internal technology demos called the valley of raw the scene consists of approximately 5,500 polygons texture maps and right now I've got none of the special features turned on so as I talk to it I'm going to just turn them on first is the bilinear filtering and NIT mapping and you'll notice that the aliasing on the nubes character on the left has a cleaned up dramatically this is kind of just about the little fighting game to show some things that could be done with uh with the hardware and notice what the frame rates very high quick response there's another will feature the reflections in the ground which is kind of a nice little addition okay this is what's written using our internal game developers toolbox called ATV which stands for arcade toolbox and you can get it from our developers Mac release CD from my second demo Oh someone turned off my virtual memory the other thing I might mention that I don't know if you did is that the the we are live here jacocks a beast the only thing that I wanted to mention too about valley of raw which is kind of a hallmark demo for us and we we debuted it last year we've been showing it for the better part of a year so for us it's a bit dated but it really does show you that a scene with with the depth complexity of three or more with high polygon counts of approaching 5500 polygons in that scene really does run at 30-plus frames a second each of those fighting characters was about 2500 polygons each and certainly you can you can dummy down the count and so on but what we like to see what we think enhances the realism of experience is is high polygon count models and very complex scenes and as you notice with all the different special effects turned on we still have we still have the playability of the 30 frame per second experience [Music] okay that's just the weight your appetite GL quake was a version done by John Carmack that's implemented using OpenGL and three effects has a mini GL driver on the PC which I was recently ported to the Mac and got the source for lion entertainment or GL quake with all the sprockets town sprockets and input sprockets turned on support it pretty well I just wanted to show you some of the special effects kinda quickly that you can use with the OpenGL version first of all reflections just in case you're ever in a deathmatch and someone jump in the water to get away from in you can kind of see them now kind of up a new depth to the game there the water [Music] and that's what that one thanks thank you great thank very much as we've heard throughout the conference we're also adding more and more 3d acceleration directly to the logic board the current ghazal product line including the 5500 and 6500 also have the API raise to chipset built directly on the logic board so with Hardware being added such as we move forward also moving into the filter media chipset really this gives us the power we need to really show the capabilities of our great game developers with the new port 4 quits well 3d 2 windows we offer also offer some new capabilities of being able to leverage the direct3d hardware accelerated cards that are already on the market what we've done is we've created the d3 d2 r8 engine that actually allows us to layer rave on top of d 3d so it's a real good developer proposition that allows our developers to get access to the hardware on the windows side as well but we noticed that when we love layer sorry rave on top of quick oil 3d forget about the same performance as a native d 3d game but if you write a native rave driver you get about a 2x performance so this is really a big incentive to our hardware vendors on the windows side to do a native rave implementation but for those of you who currently do not have one we can still leverage all of the existing windows hardware accelerator cards on the market also with our windows port we use native file i/o we use native draw content so a windows release uses the power of what Windows is capable of doing as well as leveraging the capabilities of the hardware for a quick demo what we'll do is look we can light up machine number for ATI is already written a native wave driver for the windows hardware accelerator cards but here's a brief example of native rave support on Windows we can also launch existing applications like text drives which has been very popular on Macintosh bringing up on Windows turn on auto rotate so we noticed the power and the performance of 3d acceleration Hardware even inside of a Windows environment so it's really a great cross-platform API for your 3d development also throughout the conference we've already seen that we ported quick-draw 3d to open step we are going to guarantee compatibility with quick draw 3d running on the blue box environment under Rhapsody as well as a native ports to the yellow box we've also seen the implementation on stage and all these presentation that you can also access quick-draw 3d through Java so there's actually an in-depth session on Friday where they actually get into exactly how you would implement quick-draw 3d through Java but we're going to be a great partner on the Rhapsody platform as well sort of the roadmap for quick-draw 3d we did ship quick-draw 3d one five one that added some bug fixes some additional native support life this year we're looking at implementing 412 3d 1.6 it's mainly going to be a performance release that also offers VRML 2.0 rendering compliance so we're looking at being a better VRML citizen we're also going to implement our first draft of the shader interface the beginning of next year we're then looking at implementing quick-draw 3 2.0 and that's where we'll aptly actually implement the shader interface as well as roll out a next generation hardware abstraction layer that will give you more details as we get a little bit closer to doing that so we saw in several presentations and will also show you again in the demo later in today's presentation we also have world plug which is a Netscape and Internet Explorer plug-in that allows us to display 3d and 3d m-f models directly inside of our webpages so I don't know people just came from Peter Hollies demonstration but really being able to deploy QT ml all over the Internet make it seamless make it as easy as possible Apple will actually roll out that plug-in later in the year and once again we'll hear some more information on that later on we're also now offering three DMF file references basically having one file be able to point out multiple files decreases the size of the download really gives us a lot of additional speed as well as uh making significantly smaller file sizes we're also looking at implementing a walkthrough mode in the quick-draw 3d viewer actually allowing users to navigate space instead of really just being able to manipulate an object and enable plug-in rendering on tuning cartoon interactive rendering and BSP rendering up to this point Apple is out played a very big part in VRML we've really been busy implementing the features that we have in quick dwell three one five one we're really looking at changing that and there's several ways that we're doing that we actually now have a seat on the VRML board so we are a voting member we're creating alliances with a lot of third-party VRML vendors and we're really looking at adding and fixing technologies inside of the current quick draw 3d implementation to add better VRML support there is a wide variety of partners that we're working with apple IDM in paragraph are working on the VRML 2.0 binary collaboration looking at making the files much smaller faster delivery and offering geometry compression we're also working with Silicon Graphics to license their of VRML 2.0 compliance browser called Cosmo player and we're also looking to partner with other third-party vendors so if you are vml are a VRML vendor we'd love to talk with you here's some of the other VRML vendors album the internet are in the market who are creating Macintosh products we'd also urge you to go to their webpages see exactly what they're doing enter Vista has a sea-based VRML browser called world viewer and here's the URL Dimension X has a java-based VRML browser called the good reality and of course paragraph is out there so we urge you to go to the web pages and look for their Mac clients become available very shortly with that I'd now like to call up philip snyder and he's going to get into a little bit more detail on exactly implementation of 3d plugins as well as some of the new features of quick fill 3d one five and one five one set of Philip [Applause] good morning can everyone hear me out there I can't see you so if you raise your hand to have you speak up I can't see that okay I'd like to talk to you today a bit about some of the new features in quick draw 3d one five and one five one and a few things that aren't naturally new features but are are important that we'd like to say a few words about them we assume that most of you are somewhat familiar with quick draw 3d may be programmed and it looked at the API for those of you who are new to it we've got a total of a slide for you so don't blink you'd like to point you at the develop articles that are available at the at the URL that you see on your screen there they provide a lot of useful information that I'll talk to the documentation that you can find I'll be referring to a few of those as I go through my discussion and here's the the beginner slide the basic understanding that you need to start off with quick-draw 3d is to understand the concept of our view which is an opaque object that brings together the cameras the lights the draw context which is what you render to at the renderer to the view you submit geometries transforms and styles to get image drawn and that's about all of six which points you at a very useful article develop issue 22 quicker 3d new dimensions for Macintosh graphics gives you a basic overview of our architecture and will help get you started one thing that I'd like to point out is that on our SDK we always provide two separate shared libraries one we call the debugging version and the other for lack of a more interesting name a retail version the debugging version offers you several things when the most important of which is we attempt to validate the incoming parameters for correctness looking for the aspect ratio on the camera being correct or that the thing and to provide you as a developer with a mechanism for catching those inadvertent programming errors early in addition to that we have a tool called 3d bug which is again available on the SDK that allows you to look at your memory usage in your application this requires you to be using the debugging version of the library ok let's launch into the new features section here one of our new features in 1-5 is the feature of working on windows that is Windows 95 and NT our porting philosophy is to allow the developer to write an application on the platform using the standard tools and conventions that are available on that platform and extended the built-in data types in their libraries to this end our our Windows port uses the native file i/o uses native draw context I'll be getting that to that in just a moment we have a windows native viewer that is exactly analogous to our macintosh viewer that's provided and probably more important to a lot of folks is we will be able to as david mentioned earlier access hardware acceleration through this DP d 3d rave engine as I said our our system is intentionally cross-platform from the from the get-go and sort of evidence of our success of that is the fact that we need only three windows specific data types or objects to get full functionality on on windows the other 99.9% of our API in our system is including platform-independent these new these new window specific objects are two windows specific draw context and a window specific storage object the one of the first kind of Windows NT 95 draw context we call a win32 DC draw context and the DC is there because it is in fact compatible with existing code base for Windows where the access to the Windows system is through the DC and just a note to the windows programmers you have to use the cs on BC window class style whatever that means normally I'm having anything like that looks like code on a presentation like this but I've included the data structure for our draw context on windows and you can see that there is the one field the HDC that gives you the connection to the Windows system the other TQ three draw context data is the common data that controls the draw context for all platforms so it's very easy to port by using the existing if you're going from a Mac for example to use the existing code that sets up your draw context data and then just throw in the HDC for the connections of the Windows system our second type of draw context on Windows is what we call a DD surface draw context this allows you to take advantage of the 2d hardware acceleration for bleeding and clearing that sort of thing Windows programmers out there know that this is a bit more complex this can be seen in our own data structure where we've encapsulated the the extra setup parameters and values in this TQ 3dd surface descriptor data structure my apologies for the long names but it's kind of a tradition with this as I said we have a Windows native viewer available for Windows 95 an antique analogous what we have in the Macintosh I think can we can we show something on that Nick which is a Windows 95 machine I've got the viewer up here I'm going to drag a piece of really earth model from plastics or Canadian developer we can work with you'll see similar new features of the viewer you'll see that the interactions been changed so that the virtual spheres being implemented properly so you'll see the objects only going to move when we're dragging across the inside of the virtual sphere we found this has actually made it an awful lot easier than the one point overview of some headlight things other new features that we've got in the viewer and we have a pop-up menu so that you can get a left view or a top view or or whatever which is pretty cool and we also have a home button so if you kind of get lost we can reset the view the viewer is exactly the same on Windows as it is on Macintosh and we're planning on doing a similar implementations of your own rhapsody and so basically what you see on the Mac's what you get and this is a sample app that we've got and I'm going to be using this for a demo later on and we'll be putting the source code for this on the SDK that should ship at the end of this month another new feature for our version 1.5 is an extension to our own extensibility mechanism for those of you aren't familiar with this we have a plug-in architecture that allows the application to extend the functionality of quick tour our 3d without having us to put it into the core API this can allow you to customize add more features and we'll see how that works in just a moment in 1.5 we have three types of objects that are extensible that is elements and attributes groups and renderers renders being probably very significant for our functionality and as David referred to early support for plug-in shaders will be forthcoming I suppose means real soon now there's a bit of commonality to all the plugins irrespective of what type of an extension hots you're extending that is loading an initialization on Mac we used the CFM on Windows DLL loader the application the extension itself provides a registration function that allows us get as quick for our 3d to load these these libraries the second thing they have in common is what we call a meta handler which is essentially a method dispatcher specific for the plug-in class and of course termination functions allow you to disconnect the extension though these are automatically disconnected and unloaded when you call the exit function quick-draw 3d if the plug-in renders or one or more are more significant advances to the API they're similar as I said to the other extensibility the one difference is that because of the inherent functionality required for a renderer there are sort of two levels of meta handlers sort of a meta meta Handler and the second level Matt handlers which allow you to plug in your functions for handling which geometric primitives are drawn transforms styles that sort of thing now renderers are are somewhat complex by their nature so we provided a couple sample renderers on the sdk and documentation which you can find on the sdk as well we encourage those of you who are intending to either use or write plug-in renderers to contact us early on in your development because we can provide a lot of help and the motivation for this is obviously that we can leverage off of existing functionalities or new functionality that third parties want to provide to give new rendering capabilities to our system now how does how does the plugin render fit into the into the system well the two big blocks up it interests our quick draw 3d self and quick draw 3d rave quick-draw 3d handles the geometries the transforms groups the the API that the programmer seasoned these sit on top of rave which in turn talks to acceleration hardware or if none of them is available it talks to the frame buffer directly so you're always guaranteed to have the rendering happened irrespective of whether the end user has three 3d hardware acceleration or not on a particular machine Apple's own interactive renderer is an example of how this works if in fact the plug-in itself talking to rave and then down to the hardware acceleration of the frame buffer our wireframe render on the other hand does not talk to to rave directly but instead talks to the frame buffer directly itself third-party plugins can be of either type they can either talk to the acceleration hardware or talk through rave but theoretically you could have a plugin that for example wrote PostScript out to a file okay so what what does a plugin render give you on this slide you see on your left the fine wireframe rendering and all its obfuscating glory and on the right you see a fine ray traced image of the same model provided by Lightworks ray trace renderer and you can see the nice specular highlights the anti-aliasing and that sort of pink a textured area there and I think we have a little demo on this oh yeah I'm this machine I've got a demo that hopefully is a realistic demo of how people are going to use this everybody flavor app will definitely mind photo shops up here and hit some artwork so it's actually been created in layers it's just the screen as some stuff that we were getting together for quick-draw 3d and the kettle's kind of in the middle but it's all a bit greyed out we might decide that we want something that's a bit more dynamic so when you drop that layer out and I can use a plugin from vertigo called dizzy and I can alone and come out this is going to enable me to load a 3d MF object and in deference to Shona evangelist and you can position this you'll notice the default lighting is with the ambient lights at 100% and that's probably not where you want so I can drop the ambient lighting down and actually bring in some lights myself and probably want to light it from underneath for a dramatic effect I can double-click on these lights and change the intensity change the color so I'm going to drop drop them down a little bit here and maybe make this guy over here blue or whatever and to do that might shade of blue there and they've also implemented some of our user interface widgets we talked about that last year for manipulating the object so I can basically change the orientation of it and they've also done a lot with plugin renders so we have some preview renders here I'm going to bring up the lifestyles demo and this is a basically a kind of artistic rendering type thing you can do some really Larry effects with actually this neon ones one of my favorites because I have absolutely no taste and I just crashed it ok so and basically they have the render is within their app and you can do a final quality renderer into the Photoshop window which if I hadn't tested their tape so that's for them Thank You Nick just like to briefly mention the meta handler if you want more details on how this works again the documentation the SDK and we have another session coming up tomorrow where we'll be going into a more detail on this each class has methods associated with it the plugins are required to implement certain methods other methods are optional so essentially them all the meta handler does is provide a place for quick try 3d to call to ask the plug-in for the methods that implement a particular the function that pre-implementation czar called when that method is needed internally just like to mention elements and attributes this is a feature that we had in quick draw 3d 1.0 0.6 I believe there's a fine article in developing 26 again on the web just briefly why we've lump these two together well they're very similar in fact the the difference is that attributes exhibit inheritance as whereas elements do not and if that doesn't mean anything to you I can point you to the article there is a sample plugin attribute on the SDK to provide a sort of boilerplate implementation to show you how it works we encourage developers who have custom information to migrate these attributes into plugins so they can be shared with other developers and if you're looking at either the the published book that we have or the develop articles should note that we've had a slight namespace change for to make things we'll more clear what functions are intended for plugins and which are not plug-in related API calls now have an X in them as well as data structures you see a few examples in the bottom of the screen there are more just be aware that when you're looking at the article to keep this in mind in 1:5 we have introduced a new set of geometric primitives through our already rich set of primitives in the area of labeling we have added a pixmap marker which is similar to our existing bitmap marker however it allows you to have full color pixmap as markers we've added two new surface modeling primitives in addition to our try grid and mesh which were previous release we've added the try mesh and a polyhedron I'll be going over those a little bit more for parametric for free from curves and surfaces we have an existing nerve curve in there patch and we've added an entire new category of primitives that we call conics and quad ryx and i guess that a torus is a cortex so from playing me on my map here and these are the ellipse the disk torus cylinder cone and ellipsoid so with this rich that are primitives you might be asking yourself well which one do I use what's the choice well we've sort of given you a little chart here that maps out the how we view the complexity versus the flexibility of a primitive at the lowest end of sort of flexibility are things like triangles and lines but they're very simple going up the chain we have like the polygons general polygon and up in the terms of more flexible with some expensive complexity are the try mission of polyhedron and finally we have the nerve the curve in the surface and the mesh which are by far the most flexible but also are we require some work on the part of the programmer just have a quick view of some simple versions of our new primitives like to go into a tiny bit of detail mechanics and quadric s-- because we have a unique and powerful representation if you're familiar with our previous vox primitive you know that it was defined by an origin which is based like a lower left corner and three axes three vectors that define the axes of that primitive we've designed the comics and quadric surround that same idea you have each has an origin which is the center if you will of each object and then three vectors orientation minor radius and major radius these names are somewhat arbitrary in addition the torus has a ratio field in the data structure that allows you to control the width of the other tourists tube if you will now there's a few important things to know about this that the previous slide we showed them with defined with equal length orthogonal that is mutually perpendicular axes this is not required by the way though non orthogonal axes are permitted this results in skewed objects I'll show you an image of that in just a moment the relative length of the vectors can be basically anything you want these results in elliptical cross-sections and of course the combination of both those teach features is allowed as well you can have skewed elliptical cross-section objects the comics and quadratics come with a parameterization attached to them this gives you texturing essentially for free and this is the slide that you see is a view on the previous two slides back in the same positions with it the same texture applied each and you can see how the texture wraps around of each h object the positioning was chosen somewhat arbitrarily with the hope that the choices that we made are what most people would expect and I if you look at the slide that's kind of what you would think if you put a texture around this sphere for example this slide shows an example on your left of a cylinder that's made with orthogonal but unequal length axes giving you an elliptical cross-section right cylinder on the right side you see non orthogonal axes with different lengths which gives you an elliptical so cross-section skewed cylinder and these can be applied to all of the conex and quadric s-- liquid briefly make a note of some future features for our system if you look in the data structures for these objects you'll see that we specify parameter limits this allows you in both the U and V directions to make partial objects such as hemispheres truncated cones and the like this feature is not yet released so you should note that in your code you need to set the the mins and maxes to zero and respectively if you don't we'll catch you in the in the validation on the debugging libraries that's a good motivation to use that did an example of how this can be used you can see a cylinder that has a u min probably about 0.25 and a u Max may be 0.75 giving you a pie slice out of the cylinder on the right you see a truncated cone which is accomplished by giving a V min of 0 and a V Max that may be 0.8 or so another feature that you have to be careful of is we have this idea of what's called an endcap if you have a cylinder for example you can have it represent a hollow tube or it could represent more like a child's block a solid object these endcaps fields in these data structures allow you to place an end cap on these objects to differentiate you know control whether the thing looks like it's solid or whether it's simply a tube in that case here's an image of what we saw just previously this same cylinder that's made with the partial on the left you see the end caps are turned on giving you the appearance of a solid object and the right you have the end caps off giving the appearance of a hollow cylinder that has a slice cut out of it in the current implementation since we don't have partials we don't allow you to put the interior caps on the interior caps are not the interior surface so it's a bit of a misnomer but it gives you what you saw in that previous slide the the walls on the interior cut out part so currently you you need not you need to only use the values that you see on this on the slide and if they went by too fast the slides are underdeveloped CD of the content CD like to go on to the Tri mission of polyhedron are two new polyhedral multi faceted object primitives these are intended to supplement the mesh which was introduced in version 1.0 the mesh is now basically repositioned on its strength which is for freeform geometry and highly interactive topological editing his new geometries are intended for general purpose polyhedral objects and do a bit of a better job at if that's the intention both are based on connected triangular faces vertices and edges so it allows for faster rendering and a more compact representation both the prime mission of polyhedron in contrast to the mesh but provide both an immediate mode and retain mode as the other primitives do for both of these geometries if you have a higher level primitive like say a Coons patch or something like that you need to break down these phases into the triangular faces for the polyhedron and the Tri mesh in your application okay so what's the difference between these two primitives the polyhedron makes use of the same attributes that concept as the rest of the primitives in quick draw 3d whereas the Tri mesh has a unique flat attribute model so which do I use we have four of these semi competing similar data structures these objects without going through this this chart in a lot of detail you should understand that the differences between these different these different objects you should look at the requirements of your program your application what the model is intended to be used for how its intended to be used and look at these characteristics and make your own determination on which would be the best primitive for your use and again this chart is on the on the slide and the developed on the conference CD so or that you can't memorize it at this point another new feature that we've added is what we call UV picking we already have a very rich picking API it allows you to get back the the point on the object that you picked in world space and that kind of thing with primitives that have parametric values that is texture coordinates attached to them for example the conex and the quadric polyhedral objects triangle objects that you have attached these parametric values to the vertices gives you the ability to return the texture parameter at the point of picking this allows you to do things like painting on object there's a sample app on the sdk called box paint and I think that Nick is going to show you an example of how this works so trying to another demo that doesn't press on businessing so this is an app written by michael bishop in the quadrille 3d group of books pane and it uses the UV pecking so I can kind of reorient a subject it's just intended as a kind of sample code demo of how you can use this stuff but he's implemented a couple of neat things for example the the pencil is drawn transparent and you can kind of draw silly pictures draw a kind of cartoon dummy picture we're going to talk a little bit about the picking tomorrow in a more technically oriented session so we'll talk a little bit about how you could implement this and basically because the box is because the way the box is parameterize it takes to shed on all four phases so you see on all four phases um I'm going to die to have death as well and go back to the Photoshop thing and you can see here that our hands being drawn with the interactive render and I don't know if you can see there but I can certainly see here that there's quite a lot of aliasing around the the border of the hand we've got a renderer from lightweight design which is a very high-quality renderer which supports shadows anti-aliasing transparency and I can actually use that to render this image back into my name Photoshop window so you see the progress bar at the bottom of the dizzy dialog and it appears in our chat window so plug-in renderer is an app another new and quite useful feature that we have in 1:5 is what we call file reference previously without this feature you are often required to have very large files and there was no way to modularize them at least without doing a lot of work on your own what this allows you to do is to reference one file from another and create essentially hierarchies or libraries of 3d MS files which allows the files to be smaller allows you to organize your own database more more rationally it can also reduce the bandwidth and download time because it's you can reduce the number to the size of each individual file structurally this is what it simply looks like one meta file is on the Left contains a reference to a second meta file so while the first file is being read in it hits this reference goes off reads edit file make the data structures or the objects and then returns to reading the first file and this can be done edit and I can say recursively but it can done becomes done hierarchically more than others more than one level of meta file references aloud so meta file B could itself have references and so on this level of detail is not a new feature in 1/5 per se rather we're presenting this as a sample on our SDK and conference CD to show people how to use plug-in groups briefly what it does is allows you to have the same object represented by several proxies that are different levels of resolution and the which image which model is shown depends upon the extent of the rendered image on the screen so as you get further further away you can you can substitute a simpler course or model to increase your rendering speed and again the source code for this is on the conference CD so I actually have a demo for that guy over here on windows basically this is this is a viewer and fact pretty much all of this demos written by the guy who wrote the viewer it's your own Mikami in the quadrille 3d group that's pretty cool demo doesn't look like much but I'll explain what's going on here we're actually using two plugins here the first one is a plug-in level of detail group and you'll see that as I move the object away from the camera we change the geometry it's kind of difficult to see what's going on there so another thing we have here is a plug-in wireframe renderer for Windows it's pretty simple renderer and it doesn't draw amazingly fast but if you're planning on implementing a plug-in renderer this would be a good place to start along with the other sample plug-in renderer and you'll see how and the geometry actually changes as as we change the distance from the camera so if it's not the wittiest demo in the world but it's pretty cool and we're giving you all of this code on the SDK and Mac versions of this or on the technology CD that you have and will have the Windows versions on the final CD and also on the web as soon as you can get there another new feature the tile I guess there should have been a couple slides back for organizational purposes but as we call group traversal control or more informally diving into groups previously if you encountered a group object in the meta file we read it in as an entire group and some developers have asked us to allow them to sort of dive into the group and start reading again object per object in that so instead of being given one monolithic group programmatically you can step into that group and read the contents of that and with groups thin groups and so on and my apologies for having code up here instead of instead of a block diagram or something easier to read but you can see the bottom two function calls allow you to set the state that is tell it to dive into groups or not and allows you to retrieve the current state of that state variable if you will to tell you whether you're reading entire groups or were you're reading the objects per object in the group and also tells you whether you're currently inside of a group another feature that we've added is what we call adaptive tessellation this is controlled by the subdivision style object for those of you who are familiar with our API this is another level of detail mechanism that allows you to change the subdivision on smoothly curved curves and surfaces such as nerves or the conex and quad ryx that gives you control over how many triangles we turn this into in screen space the units are pixels so for example you can specify a value of 20 and the triangles that you see are seen on the screen will be have legs of length 20 or less irrespective of the size of the rendered object on the screen so as you get further away you get fewer triangles but they're the same size so you get the same apparent smoothness and as you get closer you get many more triangles and I believe we might have a demo in this yeah on this machine what we've actually got is another patch and you can see that it's not very finely tessellated right now and I brought up the tessellation dialogue from a test that we use called spin you can see that we're tessellating in screen space to the value of 32 if I reduce that you'll see that look sorry learn to use this if I reduce that to 12 and apply it and you'll see that the object becomes more finely tessellated the interesting thing is as I move the camera as I move the camera towards the object and you'll see that the tessellation in other words a number of triangles that this patch is divided into increases and as I move it away it decreases so this can be a really effective method with the conex and quad rates and the nerds of kind of doing level of detail and reducing the complexity stuff that needs to be rendered as it pulls off into the distance another piece of functionality that we are soon to release should be as we say real soon now is the Netscape plug-in now it supports quick draw 3d 1.5 and 151 briefly what the Netscape plugin allows you to do is embed 3d MF in your HTML documents and then view these which happens you the viewer by the way through Netscape Navigator or Internet Explorer heaven forbid and this will be out sometime within the next month or so I believe and we have a demo on this Nick yeah so here we have my keys jet page I guess we have a young adolescent who wants to be a jet pilot when he grows up basically we got a couple of 3d map objects embedded in here the first is the spinning quick-draw 3d logo at the bottom and the other one is this guy and I can change the orientation it's basically live 3d data and it uses the viewer and I can kind of mess around with this the advantage of doing it this way is I'm sure you've seen on our home page we actually have a spinning quick-draw 3d logo and it gets downloaded as a bunch of gifts well it turns out that the size of this model is actually about the size of one and a half of those gifts and I think in order to do a full rotation this twelve gif files so certainly if you're doing web pages and you want to get snazzy effects on them putting 3d data on them makes a great deal of sense because you're going to reduce the bandwidth of stuff that your users are going to need to download are the things that we're investigating at the moment but we want to hear from you about whether you one that is ActiveX controls so that's one direction that we could head it and we're certainly going to do a Windows version of the Netscape plug-in which will also work in Internet Explorer Thank You Nick as David mentioned earlier we've made some improvements to the viewer and just to go over them again we've improved the virtual sphere interaction provided camera pop-ups that change your view or get you back if you've managed to scroll your object off the screen improve support for drag and drop and as far as the API goes now we have separate calls for the control control strip in the content window for those of you who are using the viewer within an application there's a develop issue number twenty nine can give you more information on on the viewer its capabilities and how to use it encourage you to to take full advantage of that like to step now into a topic that's not a new feature but we consider significant enough to mention for those of you who are not familiar with it it's quick-draw 3d rave rave is our low-level hardware abstraction layer it's basically targeted at games simulations and other high performance demand applications rave is our hardware abstraction layer this allows us to talk to one API from the standpoint of our renderers rather than having to put device specific code within a renderer either ours or a plug-in renderer and it allows the hardware vendors to support one API from the from the undersigned if you will rather than having to talk to you talk to do by different different vendors so it's a benefit for both the the render itself and for that the hardware developers it's a very thin layer this allows us to get as maximal access maximize the access to the hardware's capability what rave does is it accelerates rasterization in other words it's a it's a two and a half d mechanism you get rasterization plus depth that allows you to do hidden light hidden surface removal the API is then built around the idea of providing the features that can run most efficiently in hardware there's a few concepts in rave that you need to understand sort of from the top level the first is what we call the rave manager this is part of the quick-draw 3d Ray's shared library the rig manager is responsible for handling the different rave engines which are the individual interfaces to different hardware devices or failing that the software rasterizer it also it also provides the application with information as to which which rave engines are available for use in that application the second idea is we call drawing engine or rave engine this is a shared library that the rave manager called which implements the interface to the particular piece of hardware rave also has a concept of a draw context which is very similar to the quick-draw 3d draw context but it's somewhat lower level in accord with the lower-level nature of the parade itself a draw context is simply a rectangular region that you into which you draw associated with the draw context of the clipping region this provides the information as to what parts of the draw context to not draw to so for example if you have including windows and you're running single buffer then you don't get the occluding window getting drawn over and this is handled by by the rave manager for the for the benefit of the rave engines what is ray do ray provides currently agro shading model prospectively correct perspective perspective correct texture mapping support for z-buffering or for not z-buffering if that's what you want the try mesh is implemented there fairly directly giving the Primus a good edge on speed and it provides a number of texture formats including we call CL 8 and CL 4 which are basically indexed a bit and four bit texture Maps this gives you an idea of what the rave architecture is in the larger sense if you look on the right ignoring the game box there for a moment an application typically would talk to quick-draw 3ds API which handles cameras lights transforms that kind of thing the interactive renderer then take this information and calls and clips and computes the vertex shading on the triangles or whatever primitive heavy that you have these are then transformed into raster space and then hand it off the triangles that is or lines to the rave manager as two and a half D primitives in others this sort of screen space with depth information the rig manager then selects out of the rave software engine or a rave compliant driver which is a rave hardware engine which then can talk to either software in the first case or hardware in the second case typically what we've seen so far and what we are encouraging is that applications such as games which have very particular rendering or performance needs they can talk to the rave manager directly which then again talks to the rave engine as appropriate the advantage of this is that it allows the game to write directly to rate without having to go through quick dry things API if they so choose there's a few things that we currently do not support as we mentioned this is a two and a half D level if you will we don't support geometry processing or lighting model or clipping that is handled by the renderer that is feeding the rave manager in addition multiple monitors require intervention on the part of the rave user be that a plug-in renderer or as seen in the previous slide a game in the case of a multiple monitor you need to have separate draw context for each window for each monitor the future of rape well we have a number of features that we're considering introducing to rave you see a partial list here we encourage those of you who are rave users or in case of hardware people rape providers if you will to come and discuss with us what kind of features you would like to see as either a user or a developer of that any changes that we make will of course be backwards compatible so you needn't be concerned about existing code breaking so I've actually got to demo some right stuff here which certainly isn't as impressive as the API demo but we had a number of developers asked us for some great sample jokes so Steve Lewis in our group actually wrote a pretty cool rave sample which is they up here on the left hand side as you see it is drawing using apples kind of aging Hardware cut head to some of the other stuff we've seen today and on the right hand side we've got it using the Apple software renderer software rasterizer rather basically what we're doing is supplying this with sample code if any of you use it or have comments on it please get back to us because we'd really like to enhance this and if you have any other requirements or a sample code particularly let us know and Bill can it come to this later but tomorrow we have a feedback forum and would be particularly interested in receiving feedback on what kind of directions you'd like to see in terms of where we're going with hard way and by way of hitting towards a wrap-up here let us go over a few of the new API calls for one point five point one these are mostly in the area of more support for plugin renderers we've added features to allow the application to determine whether a plug-in renderer is intended to be for interactive use or not we allow the application to to set and retrieve custom configuration information for a plug-in renderer and also for a renderer to get the our name of a plug-in this is mostly for UI purposes I will go into any more detail on that you can attend the session 307 will go into Nik will go into considerably more detail on how these are used and what the benefits are in addition to some of these new API calls we of course have the number of bug fixes in response to a developer request to fix them outstanding bugs pains and masks on Mack and draw context the pics map draw context now allows for alphas which is very useful we've provided more support for the idle methods and some various and sundry other bugs that have somehow slipped through and one-five for more information you can again please do make use of the develop magazine articles that are available on this website we invite you to participate in our mailing list and you can simply send a help as the title of your email to the to the address you see there there's quite a bit of activity on there you can get information from us ask questions of other developers and just actually listen in on what's happening the quick route 3d website at the at the address you see here also contains a lot of useful information and pointers there's a few of the awards we've won though I maybe not all gratuitous pat on the back for our team and I waive wrapping this thing up we invite you to attend we have two more sessions that are related to quick draw 3d tomorrow we have Section 307 which was called quick draw 3d Tips & Tricks that's at 1:50 tomorrow and we have a feedback form which you very much encourage interested developers to come to tomorrow late in the evening where you can come and ask questions have your needs address to adjust things on any topic that you'd like I think that brings us to the end so it turns out we weren't quite expecting this but we've got some time left over to some questions so if you'd like to come to the mics there in the aisles and if I can invite the other members of quick three DS team her in the front and three defects goes up we'd be happy to take your question good so a question is the is quick to a 3d multi-threaded currently quit real 3d is not multi-threaded will it be yes it's our intention to make it so for both windows and Rhapsody and obviously for the night I can't say which timeframe that will be in we'd like to get it into the next release but I'm not promising anything we just but we would anticipate there being so you know within the next year are you looking at OpenGL support in any sort of way the integration with direct3d that you mentioned for instance the state interesting yeah currently we're doing a lot of work investigating exactly what card vendors need in a hardware acceleration layer so we we have a variety of options and we're actually it's funny you should ask that question because we're currently evaluating a whole bunch of options I don't really want to go into too much detail about what they are except that the most likely direction we're going to be going in is to provide the things within our hardware acceleration layer that will allow you to post OpenGL on top of that it's kind of likely that if you're familiar with microsoft's NPD stir and MCD the mini client driver on windows supports only rasterization which is where Ray's out right now one possible direction for us is that we could extend that to include things like geometry and lighting calculations the cards will be coming out in the future we expect to be much firmer on where we're going with this in a few months time but right now with talking to hardware developers and and talking to software developers basically to see what they want and to see what we can actually do it also appreciate your feedback that if you have any recommendations or options or reasons you know for one platform or another we've been courteous feedback please come up and let us know either he or if the feedback session on Friday and yeah I would definitely reiterate what they've just said if if you do have specific requirements particularly if you're developing hardware we'd really like to see you the feedback forum and if you don't want to ask your questions in public that's called just send us an email hmm okay you talked quite heavily about the 3d plugin and to your 3d viewer and you programming directly and quick trial 3d but everywhere else in the conference we keep talking about the quick-draw 3d is a subset of the QuickTime multimedia layer they keep telling us the thing to do is to use the QuickTime plugins because then you can do it on the fly as a session about that later today what's your suggestions wouldn't the advantages using three direct and we would definitely encourage you to use the QuickTime stuff I mean we see ourselves as one small component in the QT I layer and you know for example if you wanted to provide animation you could do that today by using quick draw 3d Theo geometries and using the QT I interpolators to actually interpolate your your matrices so you know we we definitely see ourselves as being like at the bottom of that so I'm sorry if we didn't address that and there's certainly in a mission but we are working very hard to get ourselves very deeply integrated in QT I and for example the plug-in which do you recommend using the 3d plugin or well you mean the plugin I think is interesting because for rendering that that's not really an applicable CGI plugin because the rendering subsystem is called by us but then you could have a plug-in third and the QT I staff that calls us and we call the plugins to the angry so our plugins a knock not really the understood moment at Netscape plugin sorry I meant at Netscape plug-in or the Netscape plugin yeah I mean the Netscape plugin something that we just did because people were asking for it and it's something that we did a while back and it didn't work with 1/5 so we wanted to upgrade it to everyone fine but yeah I mean definitely for the web stuff right now the quick hank ways to to use the plugin in the future I'm sure that you'll see a much more integrated offering so that you would use quick times method for doing ok you use the can you call the quick quick draw 3d API from MP tasks from Chrome apples multi-processing yeah that goes thanks to the the question earlier from a guy at that microphone good knows that microphone and which microphone with it and basically because we're not re-entering right now would not be safe to call critical 3d from multiple threads but what you could do is have one thread which does put your 3d stuff the problem that you're going to have is that we rely on underlying and system services and for some things like copying bits around that may not be re-entering and so you know right now you can try it and it's going to work in some cases not in others in the future we want to have a fully reentrant library go at this - hell of being short that's a lot of preparing speed I've got a number of questions I hope you'll be just a little bit patient with me ok um the first thing I saw that fighting demo I was just wondering what type of machine that was running on 8500 with the 3dfx development card inside so this is 500 is that demo made available to us call / okay thanks for that and you mentioned hmm I mentioned about the Matt Goss and or in the blue box you showed system seven point X and that kind of made me wonder because I'm testing Matt Goss eight right now it's just wondering under the blue box this is going to work under Matt Goss a you're right yeah yeah it does work on the tempo we've actually got it running in our lab depends on where you're on the development cycle in the early versions of blue boxes based on seven six the latest versions of blue box that are being under tested now is Mac OS 8 when you get your first development release will also be based on Mac OS 8 so 7 6 7 X and 800 compliant so the structure that different that there needs to be changes to make which are 3d rendering there Mac on say no there are no changes to quick all free David well that's a plus now quick tour our 3d walkthroughs who are talking about how you could have these walkthroughs can you integrate those in the QuickTime VR worlds and scenes kind of like and they were showing a demo in the QuickTime 3 Oh demo QuickTime VR scene and they had QuickTime running on a TV inside of it so could I have a QuickTime VR world and also have I believe that I'm just reading a lot of the green is you may want to talk to the quick on VR people but I believe the QuickTime VR 2.0 development kit actually allows you to call either QuickTime movies or quick-draw 3d objects so that would be better to follow up the quick 12er team I'm just wondering if you could have though on a QuickTime 3d object within a QuickTime VR object yes yes you can the the thing that you can't do today that we've kind of been talking about but it's kind of hard to do is actually having they are with an acquittal 3d scene so you can definitely have 3d in a VR scene and it's relatively straightforward but going the other ways not so straightforward okay um one other thing okay I'm gonna have to limit you to one more question because we go

  • fine running appreciate your time when

loading the reference files you were mentioning how we can have references within the QuickTime 3d or quick draw 3d piane files can you load more than one reference at the same time just thread that off yeah I mean you can have a file that contains multiple references I actually had a demo which I didn't bring which may be a sort of broad which has a very small meta file which cools I think that's five other geometries and you can change those geometries to see use over files so yeah you can have multiple references okay great thank you for writing it okay yes with regard to your level of detail rendering feature where the camera is farther away from the object it'll render it in the coarser manner can you change the parameters on that feature and how do you do it for the adaptive tessellation approach for the level of detail plug-in or the adaptive tessellation well I had the plug-in thing we were selling on Windows around just know I'm just within quick draw 3 yeah I think I had an app that was running and then under-15 one I saw this come up I thought it was a bug in my program actually that it was just that the the object was farther away and was being rendered course all right yeah that's basically it that's a tessellation and within the viewer there's this interesting feature the times how long it takes to render a frame and if it took too long to render the frame tries to re-render it with a lot of tessellation that something that some people would argue is potentially a bug I haven't so yeah it's there and we're looking at it can you turn it off you will be able to in the future I think yeah and with I mean that I talked with the chair about this yesterday and we didn't really come up with a conclusive fix because one of the demos they you what I've got uses a hacked viewer that doesn't do that and it thinks that the most sensible way to provide a solution for it would be to have a viewer flag which turns the adaptive selection turns it on in the same way that you can turn on and off the drag border thanks Eric this is um you know in the keynote address they had this picture of a yellow box and they had the things that they're putting in the yellow box and then they had one of them was quick draw 3d went in there yeah I remember that and then they said later on they said well everything in this yellow box was going to have a Java API yeah so I said does he just say the quick draw 3d is going to have a Java API that's what he said right yeah so you guys had to do that in the demo that they showed during the keynote was actually driving the 3d app from Java under the lead act in the Rhapsody Java session he showed how he actually implemented that when do we get it or how do we get they don't probably be in the developer release for us to deal with saying I'm not maybe not the developer with all this blood for me release yeah I mean look at us sorry there's actually a session going on tomorrow where he's actually going to pick apart that demo and build it from scratch and give you all the details on how that's implemented but so the Qt ml stuff is going to be implemented inside of the premiere release and then rolled together inside of unified yeah I mean it's an interesting question because one of the things that again we've been discussing most is that reg not so much done great stuff but actually rewrote in the viewer in Java so that we don't have to do different implementations on it for every platform but the universal viewer you meant the whole da yeah he meant the whole so if I want to get a camera I can get it and change it around from Java or if I want yeah okay my understanding is the Java bindings will be provided for very good I I have 50 more questions but I'm gonna go to the in the line before okay um if we're kind of running out of time here so if you don't get your turn on the mic please come find one of us afterwards and we'll be happy to answer your question yeah you mentioned do we have one minute let's think of a other question you mentioned VRML browsers have available and stuff I didn't quite understand how much integration you were talking about how with regards VRML I had understood that moving worlds was supposed to be using 3d MF file format or something along those lines how does it all fit together are we seeing a lot more integration or what we're actually working with IBM and paragraph to define that next generation binary format so we're actually working so each part of the three companies are actually contributing different standards so I believe IBM is contributing compression standards I'd a pollutant the you know parts of our binary 3d MF file format to create the next generation standard so it's still in process of getting everything put together but that's sort how we're working together is that thermal that's not available to because that's pretty much been decided upon I assume this is a subsequent version yes hey yeah we'd be real happy to talk to you about this offline but we just got a bomb box from Brubaker if we don't go they'll turn the power it so thanks a lot for coming and please out this any questions of Jasper