Как сделать так, чтобы текст отображался в X3D и Python?

Я пытаюсь сделать так, чтобы стандартный текст появлялся в сцене при нажатии левой кнопки мыши. Однако у меня проблемы с маршрутизацией. Это мой код X3D:

<X3D>
    <Scene>
        <Viewpoint DEF="VP" position="0 0 .6"/>
        <PythonScript DEF="PS" url="test.py"/>

        <Shape>
            <Text DEF="TXT" string="initial message">
                <FontStyle justify='MIDDLE' size='0.02' />
            </Text>
        </Shape>

        <MouseSensor DEF="MS"/>

        <ROUTE fromNode="MS" fromField="leftButton" toNode="PS" toField="showText"/>
        <ROUTE fromNode="PS" fromField="showText" toNode="TXT" toField="string"/>
    </Scene>
</X3D>

И код Python:

from H3DInterface import *

class ShowText(TypedField(MFString, SFBool)):

    def __init__(self):
        MFString.__init__(self)
        self.inactive_txt = 'Press left mousebutton'
        self.active_txt = 'Hello World!'

    def update(self, event):
        if event.getValue() == 1:
            return self.active_txt
        else:
            return self.inactive_txt


showText = ShowText()

Это предупреждение, которое я получил, но не смог решить:

Предупреждение: недопустимое возвращаемое значение из функции update() для определенного поля Python типа PythonScript_000000000722E320.ShowText

Что для меня странно, так как текстовый узел имеет строку атрибута base_type MFString.


person user780049    schedule 17.04.2018    source источник


Ответы (1)


MFString необходимо передать, определив строку как:

self.active_txt = ['some string']
person user780049    schedule 18.04.2018