Как нарисовать 10000+ объектов и переместить их и получить 60fps+ в Vizard Python

Я пытаюсь создать мир в Vizard 4.0, который автоматически генерирует в нем более 10000 объектов. Как только эти объекты сделаны, я хочу пролететь сквозь них или заставить их двигаться с определенной скоростью в любом направлении, которое я хочу.

Я написал код для этого, но он не дает мне FPS, который я хочу. В настоящее время я получаю только 7 кадров в секунду с этим кодом, и мне нужно, чтобы он достиг минимальной скорости 60 кадров в секунду. Я пробовал как двигать их, так и двигать камеру. Но оба дают одинаковый кадр. Я написал часть движения, в которой шары просто движутся в одном направлении, и чтобы заставить камеру двигаться, вам нужно удерживать либо левую кнопку мыши, либо правую кнопку мыши, либо обе.

Для запуска этой программы вам сначала нужно установить Vizard из worldviz. Он поставляется с 90-дневной бесплатной пробной версией. Я довольно новичок в Vizard, поэтому любая помощь будет высоко ценится. Спасибо

КОД НИЖЕ:

enter code here

import viz
import vizact
import vizshape
import random
import vizinfo
import viztask


#Enable full screen anti-aliasing (FSAA) to smooth edges
viz.setMultiSample(4)

#Start World
viz.go(viz.FULLSCREEN)


#Increase the Field of View
viz.MainWindow.fov(60)

#Set my location 8 meters back from 0,0,0
viz.move([0,0,-8])


def Create_Shape(Number,x_pace,y_pace,z_pace,set_Time) :
    #create an array of shapes
    shapes = []
    #Generate Shapes
    for i in range(Number):
        #Generate random values for position and orientation
        x = random.randint(-100,100)
        y = random.randint(-100,100)
        z = random.randint(-100,100)

        #generate shapes

        shape = vizshape.addSphere()
        #shape.setScale(0.25,0.25,0.25)
        shape.setPosition([x,y,z])
    shapes.append(shape)

    #Move shapes
    move = vizact.move(x_pace,y_pace,z_pace,set_Time)
    #Loop through all shapes and move them
    for shape in shapes:
        shape.addAction(move)
        #return shapes
        return shapes

#Calls create shape with the number of shapes needed to be made and
#the speed and time for the shapes to move at
Create_Shape(10000,0,0,10,10000000)

1 ответ

Много лет назад, когда я работал над Vizard, я помню, как загружал их, поскольку экземпляр работал бы лучше, с точки зрения памяти и скорости, к сожалению, я не помню синтаксис, но что-то вроде этого

shape = vizshape.addSphere(x) // where x is a flag for loading as instance, cant recall it well :)
Другие вопросы по тегам