不带MPxLocator插件的OpenGL Python Maya API绘图

2024-10-03 19:33:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在maya python api中执行以下简单操作:

import maya.OpenMayaUI as OpenMayaUI
import maya.OpenMayaRender as OpenMayaRender

#Get active camera.
view = OpenMayaUI.M3dView.active3dView()

glFT = OpenMayaRender.MHardwareRenderer.theRenderer().glFunctionTable()

view.beginGL()

glFT.glBegin(OpenMayaRender.MGL_LINES)
glFT.glVertex3f(0.0, 0.0, 0.0)
glFT.glVertex3f(0.0, 1.0, 0.0)
glFT.glEnd()

view.endGL()

我只想在maya中绘制一条线,而不必构建MPxLocator或让您显示它。在


Tags: importviewapigetascameraactivemaya
1条回答
网友
1楼 · 发布于 2024-10-03 19:33:24

所以我发现我需要在视图中添加回调函数来绘制:

import maya.OpenMayaUI as OpenMayaUI
import maya.OpenMayaRender as OpenMayaRender
import maya.cmds as cmds


def setCamera(*args):
    view = OpenMayaUI.M3dView.active3dView()

    # Get a renderer, then a function table
    glRenderer = OpenMayaRender.MHardwareRenderer.theRenderer()
    glFT = glRenderer.glFunctionTable()

    view.beginGL()

    glFT.glPushAttrib(OpenMayaRender.MGL_LINE_BIT)
    glFT.glLineWidth(5.0)

    glFT.glBegin(OpenMayaRender.MGL_LINES)

    glFT.glColor3f(1.0, 0.0, 0.0)
    glFT.glVertex3f(0.0, 0.0, 0.0)
    glFT.glVertex3f(3.0, 0.0, 0.0)

    glFT.glColor3f(0.0, 1.0, 0.0)
    glFT.glVertex3f(0.0, 0.0, 0.0)
    glFT.glVertex3f(0.0, 3.0, 0.0)

    glFT.glColor3f(0.0, 0.0, 1.0)
    glFT.glVertex3f(0.0, 0.0, 0.0)
    glFT.glVertex3f(0.0, 0.0, 3.0)

    glFT.glEnd()

    glFT.glPopAttrib()

    view.endGL()

if __name__ == '__main__':

    panel = cmds.getPanel(withFocus=True)
    callBack = OpenMayaUI.MUiMessage.add3dViewPostRenderMsgCallback(
        panel, setCamera)

    view = OpenMayaUI.M3dView.active3dView()
    view.refresh(True, True)

然后要删除回调:

^{pr2}$

希望能帮助别人!在

相关问题 更多 >