Panda3D OnscreenImage не обновляется между итерациями цикла for, как ожидалось - PullRequest
0 голосов
/ 09 июля 2019

У меня есть папка с изображениями, которые я хочу использовать в качестве фона для рендеринга сцены.Я использую класс OnscreenImage Panda3D, чтобы нарисовать их.У меня есть цикл for, в котором случайный индекс выбирается на каждой итерации и используется соответствующее ему изображение.Однако в последовательности сгенерированных изображений первое выбранное изображение остается во всех из них.Другими словами, фон первого изображения выбирается случайным образом, но затем он используется для всех изображений.

Я уже обеспечил правильное обновление моей индексной переменной, печатая ее при каждой итерации, поэтому я предполагаю, чтоЭта проблема напрямую связана с процедурой рендеринга Panda3D.У меня очень ограниченный опыт работы с Panda3D, поэтому я не совсем уверен, с чего начать отладку этой проблемы.

def renderToPNM():
    base.graphicsEngine.renderFrame() # render the frame

    image = PNMImage() # PNMImage is an image manipulation class provided by Panda3D
    dr = base.camNode.getDisplayRegion(0)
    dr.getScreenshot(image) # take a screenshot of the rendered window

    return image


for i in range(10):
    ...

    scene_id = random.randint(0,381) # randomly select an image number
    background = OnscreenImage(parent = render2d, image = "maps/NBL_images/{}.png".format(scene_id)) # load background image
    base.cam2d.node().getDisplayRegion(0).setSort(-1) # make sure it renders behind everything else

    ...

    path = "Pictures/renders/images/scene_{}.jpg".format(i) # set the path to save the render to

    renderToPNM().write(Filename(path)) # call the function to screencap the scene

Есть мысли?

...