def quaternion(cfg): '''Animated quaternion used to rotate a plane''' cfg.duration = 10. step = cfg.duration / 5. x = math.sqrt(0.5) quat_animkf = [ ngl.AnimKeyFrameQuat(0 * step, (0, 0, 0, 1)), ngl.AnimKeyFrameQuat(1 * step, (0, 0,-x, x)), ngl.AnimKeyFrameQuat(2 * step, (0, 1, 0, 0)), ngl.AnimKeyFrameQuat(3 * step, (1, 0, 0, 0)), ngl.AnimKeyFrameQuat(4 * step, (x, 0, 0, x)), ngl.AnimKeyFrameQuat(5 * step, (0, 0, 0, 1)), ] quat = ngl.AnimatedQuat(quat_animkf, as_mat4=True) q = ngl.Quad((-1, -1, 0), (2, 0, 0), (0, 2, 0)) m = ngl.Media(cfg.medias[0].filename) t = ngl.Texture2D(data_src=m) p = ngl.Program(vertex=cfg.get_vert('uniform-mat4')) render = ngl.Render(q, p) render.update_textures(tex0=t) render.update_uniforms(transformation_matrix=quat) camera = ngl.Camera(render) camera.set_eye(0.0, 0.0, 4.0) camera.set_center(0.0, 0.0, 0.0) camera.set_up(0.0, 1.0, 0.0) camera.set_perspective(45.0, cfg.aspect_ratio_float) camera.set_clipping(1.0, 10.0) return camera
def quaternion(cfg): """Animated quaternion used to rotate a plane""" cfg.duration = 10.0 step = cfg.duration / 5.0 x = math.sqrt(0.5) quat_animkf = [ ngl.AnimKeyFrameQuat(0 * step, (0, 0, 0, 1)), ngl.AnimKeyFrameQuat(1 * step, (0, 0, -x, x)), ngl.AnimKeyFrameQuat(2 * step, (0, 1, 0, 0)), ngl.AnimKeyFrameQuat(3 * step, (1, 0, 0, 0)), ngl.AnimKeyFrameQuat(4 * step, (x, 0, 0, x)), ngl.AnimKeyFrameQuat(5 * step, (0, 0, 0, 1)), ] quat = ngl.AnimatedQuat(quat_animkf, as_mat4=True) q = ngl.Quad((-1, -1, 0), (2, 0, 0), (0, 2, 0)) m = ngl.Media(cfg.medias[0].filename) t = ngl.Texture2D(data_src=m) p = ngl.Program(vertex=cfg.get_vert("uniform-mat4"), fragment=cfg.get_frag("texture")) p.update_vert_out_vars(var_normal=ngl.IOVec3(), var_uvcoord=ngl.IOVec2(), var_tex0_coord=ngl.IOVec2()) render = ngl.Render(q, p) render.update_frag_resources(tex0=t) render.update_vert_resources(transformation_matrix=quat) camera = ngl.Camera(render) camera.set_eye(0.0, 0.0, 4.0) camera.set_center(0.0, 0.0, 0.0) camera.set_up(0.0, 1.0, 0.0) camera.set_perspective(45.0, cfg.aspect_ratio_float) camera.set_clipping(1.0, 10.0) return camera
def transform_rotate_quat_animated(cfg, quat0=(0, 0, -0.474, 0.880), quat1=(0, 0, 0, 0)): cfg.aspect_ratio = (1, 1) shape = _transform_shape(cfg) anim = [ ngl.AnimKeyFrameQuat(0, quat0), ngl.AnimKeyFrameQuat(cfg.duration / 2., quat1), ngl.AnimKeyFrameQuat(cfg.duration, quat0), ] return ngl.RotateQuat(shape, anim=ngl.AnimatedQuat(anim))
ngl.AnimKeyFrameFloat, data)), animated_vec2=lambda data: ngl.AnimatedVec2(keyframes=_get_anim_kf( ngl.AnimKeyFrameVec2, data)), animated_vec3=lambda data: ngl.AnimatedVec3(keyframes=_get_anim_kf( ngl.AnimKeyFrameVec3, data)), animated_vec4=lambda data: ngl.AnimatedVec4(keyframes=_get_anim_kf( ngl.AnimKeyFrameVec4, data)), animated_buffer_float=lambda data: ngl.AnimatedBufferFloat( keyframes=_get_anim_kf(ngl.AnimKeyFrameBuffer, data)), animated_buffer_vec2=lambda data: ngl.AnimatedBufferVec2( keyframes=_get_anim_kf(ngl.AnimKeyFrameBuffer, data)), animated_buffer_vec3=lambda data: ngl.AnimatedBufferVec3( keyframes=_get_anim_kf(ngl.AnimKeyFrameBuffer, data)), animated_buffer_vec4=lambda data: ngl.AnimatedBufferVec4( keyframes=_get_anim_kf(ngl.AnimKeyFrameBuffer, data)), animated_quat_mat4=lambda data: ngl.AnimatedQuat( keyframes=_get_anim_kf(ngl.AnimKeyFrameQuat, data), as_mat4=True), animated_quat_vec4=lambda data: ngl.AnimatedQuat( keyframes=_get_anim_kf(ngl.AnimKeyFrameQuat, data), as_mat4=False), array_float=lambda data: ngl.BufferFloat(data=data), array_int=lambda data: ngl.BufferInt(data=data), array_ivec2=lambda data: ngl.BufferIVec2(data=data), array_ivec3=lambda data: ngl.BufferIVec3(data=data), array_ivec4=lambda data: ngl.BufferIVec4(data=data), array_mat4=lambda data: ngl.BufferMat4(data=data), array_vec2=lambda data: ngl.BufferVec2(data=data), array_vec3=lambda data: ngl.BufferVec3(data=data), array_vec4=lambda data: ngl.BufferVec4(data=data), single_bool=lambda data: ngl.UniformBool(data), single_float=lambda data: ngl.UniformFloat(data), single_int=lambda data: ngl.UniformInt(data), single_ivec2=lambda data: ngl.UniformIVec2(data),