[x3d-public] Question about a Python and x3d.py Error message

Bergstrom, Aaron aaron.bergstrom at und.edu
Wed Jan 15 09:38:42 PST 2025


Don,

You should think of it as me extending Maya functionality, not me extending x3d.py functionality.

Unfortunately, the fancy schmantzy code I’m writing for Maya requires me to add x3d.py functionality to Maya nodes so I can do fancy GUI-based X3D Route creation in the Maya Node Editor.

Not planning on changing anything about x3d.py, I just want to add x3d.py functionality to Maya nodes.

Aaron

From: Brutzman, Donald (Don) (CIV) <brutzman at nps.edu>
Sent: Wednesday, January 15, 2025 11:25 AM
To: Extensible 3D (X3D) Graphics public discussion <x3d-public at web3d.org>
Cc: Bergstrom, Aaron <aaron.bergstrom at und.edu>
Subject: Re: [x3d-public] Question about a Python and x3d.py Error message

Hey guys, "please don't go there."  You should never need to poke around with __init__ or inheritance or any of that internal stuff.  Those code patterns are autogenerated, so you don't have to do any of that.

Just build a scene graph.  The vocabulary is simply X3D.

Corrolary:   "creativity is punished"   😨


all the best, Don

--

Don Brutzman  Naval Postgraduate School, Code USW/Br        brutzman at nps.edu<mailto:brutzman at nps.edu>

Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149

X3D graphics, virtual worlds, navy robotics https://faculty.nps.edu/brutzman



________________________________
From: x3d-public <x3d-public-bounces at web3d.org<mailto:x3d-public-bounces at web3d.org>> on behalf of Bergstrom, Aaron via x3d-public <x3d-public at web3d.org<mailto:x3d-public at web3d.org>>
Sent: Wednesday, January 15, 2025 9:03 AM
To: Extensible 3D (X3D) Graphics public discussion <x3d-public at web3d.org<mailto:x3d-public at web3d.org>>
Cc: Bergstrom, Aaron <aaron.bergstrom at und.edu<mailto:aaron.bergstrom at und.edu>>
Subject: Re: [x3d-public] Question about a Python and x3d.py Error message


Apparently, I’m a bit out of my depth when it comes to multi class inheritance. Not really a good tutorial out there for mixing inheritance from Maya python classes and other classes. I’m getting another error now.

“'X3DScene' object has no attribute '_Scene__children'”



Looking up similar errors in Google basically tells me I’m not calling the inherited classes __init__ methods.



I’ll have to do some more digging.



From: John Carlson <yottzumm at gmail.com<mailto:yottzumm at gmail.com>>
Sent: Wednesday, January 15, 2025 10:52 AM
To: Extensible 3D (X3D) Graphics public discussion <x3d-public at web3d.org<mailto:x3d-public at web3d.org>>
Cc: Bergstrom, Aaron <aaron.bergstrom at und.edu<mailto:aaron.bergstrom at und.edu>>
Subject: Re: [x3d-public] Question about a Python and x3d.py Error message



self is the first parameter to instance methods.  I don’t know about class methods.  My guess is you might want instance methods, but it’s your design.



On Wed, Jan 15, 2025 at 10:37 AM Bergstrom, Aaron via x3d-public <x3d-public at web3d.org<mailto:x3d-public at web3d.org>> wrote:

John,



Thanks for responding.



So in the case of the code below, would the instance method be the “def creator(cls):” method? If so, would I think do the following: “def creator(cls, self):”



Or am I not understanding what you are saying?



Thanks,



Aaron



From: John Carlson <yottzumm at gmail.com<mailto:yottzumm at gmail.com>>
Sent: Wednesday, January 15, 2025 10:12 AM
To: Extensible 3D (X3D) Graphics public discussion <x3d-public at web3d.org<mailto:x3d-public at web3d.org>>
Cc: Bergstrom, Aaron <aaron.bergstrom at und.edu<mailto:aaron.bergstrom at und.edu>>
Subject: Re: [x3d-public] Question about a Python and x3d.py Error message



Aaron, AFAIK, you need “self” as the first parameter in your instance methods (not functions, of course).  I don’t know about class methods.



If you’re familiar with Java or C++, this is similar to “this”.



On Wed, Jan 15, 2025 at 10:02 AM Bergstrom, Aaron via x3d-public <x3d-public at web3d.org<mailto:x3d-public at web3d.org>> wrote:

I need help troubleshooting a x3d.py error message.



In developing a Python version of the Rawkee X3D exporter plugin for Maya, I am attempting to create nodes that inherit from both the Maya Python API 2.0 and x3d.py



As such, I have a question about python and multiple class inheritance, and an error I am seeing. Admittedly, I am not the strongest Python programmer.



I am getting the following error when I execute the Python code in Maya, and I’m pretty sure I do not of the __init__() function setup correctly.



# Error: TypeError: file C:\Users\user.name<http://user.name/>\AppData\Roaming\Python\Python311\site-packages\x3d\x3d.py line 14984: Scene.hasChild() missing 1 required positional argument: 'self' #



Can anyone with some Python experience give me an idea of what I am doing wrong here?



Here is the code:

#################################################################

import x3d



import maya.api.OpenMaya as aom

import maya.api.OpenMayaUI as aomui

import maya.api.OpenMayaRender as aomr



# import xmltodict

# import json



class X3DScene (aom.MPxNode, x3d.Scene):

    TYPE_NAME    = "Scene"

    TYPE_ID      = aom.MTypeId(0x00108FFF)

    PROFILE_TYPE = "Full"

    VERSION      = "4.0"



    def __init__(self):

        super(X3DScene, self).__init__()



    @classmethod

    def creator(cls):

        return X3DScene()



    @classmethod

    def initialize(cls):

        cls.x3dDoc = x3d.X3D(profile=cls.PROFILE_TYPE, version=cls.VERSION)

        cls.x3dDoc.Scene = cls

        #######################################################

        # Test dump to make sure the class works as expected

        #print(json.dumps(xmltodict.parse(cls.x3dDoc.XML()), indent=4))

        print(cls.x3dDoc.XML())

_______________________________________________
x3d-public mailing list
x3d-public at web3d.org<mailto:x3d-public at web3d.org>
http://web3d.org/mailman/listinfo/x3d-public_web3d.org

_______________________________________________
x3d-public mailing list
x3d-public at web3d.org<mailto:x3d-public at web3d.org>
http://web3d.org/mailman/listinfo/x3d-public_web3d.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20250115/50cfa314/attachment-0001.html>


More information about the x3d-public mailing list