def __init__(self, texture_array, scale=0.2, window_size=512, texture_size=512): super().__init__() self.scale = scale self.current_scale = 1 self.texture_array = texture_array self.texture_dtype = type(self.texture_array.flat[0]) self.ndims = self.texture_array.ndim self.center_shift = TransformState.make_pos2d((-0.5, -0.5)) self.shift_back = TransformState.make_pos2d((0.5, 0.5)) #Create texture stage self.texture = Texture("Stimulus") self.texture.setup2dTexture(texture_size, texture_size, Texture.T_unsigned_byte, Texture.F_luminance) self.texture.setWrapU(Texture.WM_clamp) self.texture.setWrapV(Texture.WM_clamp) self.texture.setRamImageAs(self.texture_array, "L") self.textureStage = TextureStage("Stimulus") #Create scenegraph cm = CardMaker('card1') cm.setFrameFullscreenQuad() self.card1 = self.aspect2d.attachNewNode(cm.generate()) self.card1.setTexture(self.textureStage, self.texture) #ts, tx if self.scale != 0: self.taskMgr.add(self.scaleTextureTask, "scaleTextureTask")
def trs_transform(self, elapsed_time): """ trs = translate rotate scale: transform for mask stage """ pos = 0.5 + self.mask_position_uv[0], 0.5 + self.mask_position_uv[1] center_shift = TransformState.make_pos2d((-pos[0], -pos[1])) scale = TransformState.make_scale2d(1/self.mask_scale) rotate = TransformState.make_rotate2d(np.mod(elapsed_time*40, 360)) translate = TransformState.make_pos2d((0.5, 0.5)) return translate.compose(rotate.compose(scale.compose(center_shift)))
def trs_transform(self): """ trs = translate rotate scale: transform for mask stage """ pos = 0.5 + self.mask_position_uv[0], 0.5 + self.mask_position_uv[1] center_shift = TransformState.make_pos2d((-pos[0], -pos[1])) scale = TransformState.make_scale2d(1/self.scale) rotate = TransformState.make_rotate2d(self.mask_angle) translate = TransformState.make_pos2d((0.5, 0.5)) return translate.compose(rotate.compose(scale.compose(center_shift)))
def trs_transform(self): """ trs = translate rotate scale transform for mask stage rdb contributed to this code """ #print(self.strip_angle) pos = 0.5 + self.mask_position_uv[0], 0.5 + self.mask_position_uv[1] center_shift = TransformState.make_pos2d((-pos[0], -pos[1])) scale = TransformState.make_scale2d(1 / self.scale) rotate = TransformState.make_rotate2d(self.strip_angle) translate = TransformState.make_pos2d((0.5, 0.5)) return translate.compose(rotate.compose(scale.compose(center_shift)))
def trs_transform(self): """ trs = translate-rotate-scale transform for mask stage panda3d developer rdb contributed to this code """ pos = 0.5 + self.mask_position_uv[0], 0.5 + self.mask_position_uv[1] center_shift = TransformState.make_pos2d((-pos[0], -pos[1])) scale = TransformState.make_scale2d(1 / self.scale) rotate = TransformState.make_rotate2d( self.current_stim_params['strip_angle']) translate = TransformState.make_pos2d((0.5, 0.5)) return translate.compose(rotate.compose(scale.compose(center_shift)))