If you need a hand with glTF, give me a shout. I've writting a couple of implementations in my day :)
On Wed, 7 Jun 2017 at 20:47 Benjamin Moran <benmora...@gmail.com> wrote: > I think as one of the "pyglet elders", Richard gets two votes here :) > I believe that generic 3D model support, and a user-friendly way to set 2D > and 3D projections are two of the last things missing from pyglet. > > Splitting pyglet into seperate modules at this point is probably not a > good idea due to the aforementioned number of contributors. It's a > discussion best left for the future when we're migrated to GL3+/Python3, > and possibly pick up a few active contributors. In the meantime, to Steve's > point, I think we can definitely investigate tweaks to make pyglet's > modules more usable by themselves. I've seen others with similar complaints. > > Regarding avoiding bloat, I think the basic classes and loading mechanisms > are important. The codecs themselves are a different story, and I agree > that we shouldn't try to support too much. We have good mechanisms for > adding codecs later, just like the image module: > pyglet.model.codecs.add_decoders(MyFormatDecoder()) > model = pyglet.model.load("mymodel.xyz") > > One or two generic decoders are probably a good idea. Obj seems a > no-brainer. > Greg, I like the glTF format. I forgot all about that one. It seems like > there are plenty of tools to convert to it, and it's royalty free. > > > > On Thursday, June 8, 2017 at 8:09:20 AM UTC+9, Richard Jones wrote: > >> Careful, folks. Please don't kill off this actually very useful >> contribution to pyglet by sidetracking it into a massive (unnecessary, >> bordering on harmful in my opinion) refactoring. >> >> >> Richard >> > >> On 8 June 2017 at 03:36, Steve Johnson <dio...@gmail.com> wrote: >> >>> YES! As I was typing my last email I was considering breaking it down >>> explicitly like that, but decided to be vague instead. >>> >>> pyglet_core (gl, window, canvas, no dependencies) >>> pyglet_utils (event, clock, no dependencies) >>> pyglet_media (media) >>> pyglet_graphics (graphics) >>> pyglet_drawing (sprite, text) >>> pyglet_assets (resource, image) >>> pyglet_input >>> pyglet_transforms?? >>> pyglet_models?? >>> >>> And then tie it all together with the pyglet superpackage, which has >>> pyglet.app. >>> >>> You could also split the maintainer responsibility up across modules, >>> version them separately, and have clear API touch points between them. They >>> could remain in the same repo to keep things simple. The docs could be >>> unified, or split up and linked using intersphinx, with the high level >>> guides living in the main pyglet repo. (Reading back over this paragraph, >>> though, that seems like too much overhead for the number of people on this >>> project.) >>> >>> The split would solve a problem I had recently: if you want to use >>> pyglet just for audio (in this case I was doing my graphics with >>> BearLibTerminal), you have to do some pyglet.options voodoo. I'd rather >>> just import pyglet_audio. It's the nicest way to do audio in Python by far. >>> >>> On Wednesday, June 7, 2017 at 10:11:26 AM UTC-7, swiftcoder wrote: >>>> >>>> Yeah, that's fair. Maybe it's time that pyglet became a collection of >>>> libraries. >>>> >>>> On the other hand, we do need to overhaul pyglet itself to provide all >>>> the modern OpenGL primitives. And those primitives aren't very useful to >>>> newcomers without a high-level abstraction over models/scenes... >>>> >>>> Maybe go the other direction. Produce a pyglet-core with just the >>>> OpenGL primitives, and make pyglet itself a meta-package over pyglet-core, >>>> pyglet-scene, etc? >>>> On Wed, Jun 7, 2017 at 09:07, Steve Johnson <dio...@gmail.com> wrote: >>>> >>>>> I question the idea of including any of this stuff in pyglet. It is >>>>> already a large library. >>>>> >>>>> Why not start by creating a third party module, letting it stabilize >>>>> on its own, and rolling it into pyglet when it has proved its usefulness >>>>> and quality? >>>>> >>>>> Honestly, if I were designing pyglet from scratch, I would create four >>>>> separate libraries. Dependency management and app packaging in the Python >>>>> ecosystem are not as hard as they used to be. >>>>> >>>>> On Wednesday, June 7, 2017 at 8:29:11 AM UTC-7, swiftcoder wrote: >>>>> >>>>>> Gltf would be a natural choice, in many ways: >>>>>> >>>>>> https://github.com/KhronosGroup/glTF >>>>>> >>>>>> It's an open interchange format, with some degree of tool support >>>>>> (and very easy to write converters for). >>>>>> >>>>> On Wed, Jun 7, 2017 at 08:08, DR0ID <dr0id...@gmail.com> wrote: >>>>>> >>>>> On 07.06.2017 05:29, Benjamin Moran wrote: >>>>>>> >>>>>>> OK, loud and clear. I won't waste effort on transform methods. >>>>>>> >>>>>>> Another question is what types of codecs we should try to include >>>>>>> other than obj, and who wants to write them? :) >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Wednesday, June 7, 2017 at 10:34:31 AM UTC+9, Richard Jones >>>>>>> wrote: >>>>>>>> >>>>>>>> There absolutely has to be a default vertex and fragment shader >>>>>>>> with this implementation, yep. >>>>>>>> >>>>>>>> On 7 June 2017 at 11:19, Tristam MacDonald <swift...@gmail.com> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> I think it's going to end up actively harmful. >>>>>>>>> >>>>>>>>> We need to give them the tools to do GPU transforms anyway (a >>>>>>>>> class for placing models in the scene, default uniforms for the >>>>>>>>> transform >>>>>>>>> matrices, and a default vertex shader), at which point having methods >>>>>>>>> to >>>>>>>>> also pre-transform models on the CPU are redundant and/or confusing. >>>>>>>>> >>>>>>>>> On Tue, Jun 6, 2017 at 18:12, Benjamin Moran <benmo...@gmail.com> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Thanks for your feedback Tristam. I actually do agree with both >>>>>>>>>> of you guys that this is GPU/shader territory. >>>>>>>>>> >>>>>>>>>> I am mainly looking at it from the viewpoint of a user thats >>>>>>>>>> using Pyglet 1.3, and has little or no OpenGL knowledge. >>>>>>>>>> For example, I have a little side-scrolling shoot-em-up game I >>>>>>>>>> made to play around with projection and "2.5D" style side scrolling. >>>>>>>>>> Lets >>>>>>>>>> say I have a single asteroid model that I want to place in the >>>>>>>>>> background >>>>>>>>>> at various random positions and rotations. Having a few transform >>>>>>>>>> methods >>>>>>>>>> would let you randomly place them at runtime without needing to >>>>>>>>>> create a >>>>>>>>>> full scene in an editor. >>>>>>>>>> >>>>>>>>>> That's basically it. Do you think it would harmful to include >>>>>>>>>> transform methods, in the sense that we would be giving users tools >>>>>>>>>> that >>>>>>>>>> they probably shouldn't really be using anyway? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Tuesday, June 6, 2017 at 11:45:13 PM UTC+9, swiftcoder wrote: >>>>>>>>>> >>>>>>>>>>> I'm not sure it's worthwhile to include *at all*. What's the >>>>>>>>>>> advantage of doing that, versus transforming the model on the GPU? >>>>>>>>>>> >>>>>>>>>>> Matrix * vector operations in the vertex shader are really >>>>>>>>>>> cheap, and most programs are limited by the fragment shader >>>>>>>>>>> performance. >>>>>>>>>>> >>>>>>>>>>> The only case where this might be a win is if you are assembling >>>>>>>>>>> a level from singular geometries at runtime. Which seems a >>>>>>>>>>> vanishingly >>>>>>>>>>> unlikely case - generally you would assemble static elements in your >>>>>>>>>>> editor, and then add multiple copies of props, etc at runtime. >>>>>>>>>>> >>>>>>>>>> On Tue, Jun 6, 2017 at 00:29, Benjamin Moran <benmo...@gmail.com> >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> ISTM that gross operations on the model (transformations on >>>>>>>>>>>>> all vertices like the translation - I think that's what you mean >>>>>>>>>>>>> by >>>>>>>>>>>>> "shifting the model") should be handled entirely by a shader, and >>>>>>>>>>>>> no actual >>>>>>>>>>>>> vertex data manipulation, since setting the shader variable will >>>>>>>>>>>>> be >>>>>>>>>>>>> infinitely faster. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Richard >>>>>>>>>>>>> >>>>>>>>>>>>> Yes, sorry, I do mean translation. And you're absolutely right >>>>>>>>>>>> that it's silly to do these types of transformations on the CPU in >>>>>>>>>>>> a >>>>>>>>>>>> realtime application. >>>>>>>>>>>> I was mainly thinking that it's useful to have transform >>>>>>>>>>>> methods to reposition static objects in the scene when you first >>>>>>>>>>>> load them. >>>>>>>>>>>> I think the only possibilities are passing arguments to the >>>>>>>>>>>> pyglet.model.load function, or doing it right after loading. If >>>>>>>>>>>> you do it >>>>>>>>>>>> after loading, the following three methods should cover most bases: >>>>>>>>>>>> Model.update(x, y, z) # Translate on a specific axis. >>>>>>>>>>>> Model.scale(1.0) # Rescale the entire model. >>>>>>>>>>>> Model.rotate(x, y, z) # Rotate along one or more axis. >>>>>>>>>>>> >>>>>>>>>>>> This would come with a big fat warning about not doing this >>>>>>>>>>>> every frame, and of course using shaders is going to be necessary >>>>>>>>>>>> for most >>>>>>>>>>>> things. >>>>>>>>>>>> Does that sound reasonable? >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>>>> Google Groups "pyglet-users" group. >>>>>>>>>>>> >>>>>>>>>>> To unsubscribe from this group and stop receiving emails from >>>>>>>>>>>> it, send an email to pyglet-users...@googlegroups.com. >>>>>>>>>>>> To post to this group, send email to pyglet...@googlegroups.com >>>>>>>>>>>> . >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> Visit this group at >>>>>>>>>>>> https://groups.google.com/group/pyglet-users. >>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>> Google Groups "pyglet-users" group. >>>>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>>>> send an email to pyglet-users...@googlegroups.com. >>>>>>>>>> To post to this group, send email to pyglet...@googlegroups.com. >>>>>>>>>> Visit this group at https://groups.google.com/group/pyglet-users. >>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>> >>>>>>>>> -- >>>>>>>>> You received this message because you are subscribed to the Google >>>>>>>>> Groups "pyglet-users" group. >>>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>>> send an email to pyglet-users...@googlegroups.com. >>>>>>>>> To post to this group, send email to pyglet...@googlegroups.com. >>>>>>>>> Visit this group at https://groups.google.com/group/pyglet-users. >>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "pyglet-users" group. >>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to pyglet-users...@googlegroups.com. >>>>>>> To post to this group, send email to pyglet...@googlegroups.com. >>>>>>> Visit this group at https://groups.google.com/group/pyglet-users. >>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>> >>>>>>> >>>>>>> Hi there >>>>>>> >>>>>>> Not sure if you would like an external dependency or not, but there >>>>>>> is assimp, see >>>>>>> >>>>>>> http://www.assimp.org/index.html >>>>>>> >>>>>>> It loads various formats to the same structure so the code will only >>>>>>> have to worry about one format internally (I haven't used it yet, but >>>>>>> probably will try it out in future). >>>>>>> >>>>>>> And I don't see the point to write your own codecs if some one else >>>>>>> already has gone through the trouble making such a library. >>>>>>> >>>>>>> But sure, pyglet could focus on just one or few formats and that >>>>>>> would be probably enough (since there are other ways to convert a model >>>>>>> to >>>>>>> the supported format). I would like a format where one can define bones >>>>>>> and >>>>>>> animations too. But that is just my wish. >>>>>>> >>>>>>> Keep up the good work. >>>>>>> >>>>>>> ~DR0ID >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "pyglet-users" group. >>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to pyglet-users...@googlegroups.com. >>>>>>> To post to this group, send email to pyglet...@googlegroups.com. >>>>>>> Visit this group at https://groups.google.com/group/pyglet-users. >>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>> >>>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "pyglet-users" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to pyglet-users...@googlegroups.com. >>>>> To post to this group, send email to pyglet...@googlegroups.com. >>>>> Visit this group at https://groups.google.com/group/pyglet-users. >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> -- >>> You received this message because you are subscribed to the Google >>> Groups "pyglet-users" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to pyglet-users...@googlegroups.com. >>> To post to this group, send email to pyglet...@googlegroups.com. >>> Visit this group at https://groups.google.com/group/pyglet-users. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- > You received this message because you are subscribed to the Google Groups > "pyglet-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to pyglet-users+unsubscr...@googlegroups.com. > To post to this group, send email to pyglet-users@googlegroups.com. > Visit this group at https://groups.google.com/group/pyglet-users. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "pyglet-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to pyglet-users+unsubscr...@googlegroups.com. To post to this group, send email to pyglet-users@googlegroups.com. Visit this group at https://groups.google.com/group/pyglet-users. For more options, visit https://groups.google.com/d/optout.