精华内容
下载资源
问答
  • 相信近期都会被一部评分较高的虚拟游戏电影...简单来回顾一下剧情,未来,一帮天才游戏设计师创造了一个虚拟的vr游戏世界“绿洲”,人们戴着头盔等各种传感器可以操作虚拟世界里的个人人物。一天,主设计师自称去...

    相信近期都会被一部评分较高的虚拟游戏电影“头号玩家”所吸引,今天也去看了下,很好看,整个过程,激动刺激,当然除了这些刺激之外,我也在思考一个问题,若干年后,我们的现实会像电影里面呈现的那样吗?或者也许更极端一点,我们会完全活在虚拟的世界吗?

    简单来回顾一下剧情,未来,一帮天才游戏设计师创造了一个虚拟的vr游戏世界“绿洲”,人们戴着头盔等各种传感器可以操作虚拟世界里的个人人物。一天,主设计师自称去世了,留下了三把钥匙在虚拟环境中,大家通过在其中探索找到这三把钥匙可以成为这个游戏的主宰者。为了成为主宰者,里面就出现了各种势力团体与个人,一顿虚拟世界与真实世界的各种争抢后,一个普通玩家也就是主人公最终找到了三把钥匙成为了主宰者,控制着整个游戏。

    其实头戴式vr游戏现在也有,只是没有电影中显示的那么沉浸式,那么先进,未来可能会有。这种完全沉浸式的好处在于人们在现实世界中无法实现的操作,比如开着汽车肆意狂奔,拥有各种高科技武器随便打架等等,可以完全在虚拟世界中实现,而且现实的身体与大脑感官可以完全感受到这种种刺激,想想确实也非常刺激,对比现在的平面电脑游戏,顶多控制着鼠标键盘操作人物,缺乏真实的身体与沉浸式的互动。那么这种完全沉浸式的游戏一个缺点就是,玩家容易深陷其中,以至于容易弄混现实与游戏而无法自拔,人们的现实就是去虚拟的世界傲游,在假设现实世界可以满足自己基本的衣食住行的情况下,人们回到真实世界的唯一目的就是,吃饭睡觉解决生理问题等等,然后继续去虚拟世界。如果一个人一天到晚的在虚拟世界里面,那么你觉得这个人现实的意义在哪里?无非就是渴了饿了出来喝点吃点维持着自己肉身,保证自己的身体与精神不会在现实世界中消失,现实就是虚拟,虚拟就是现实。现在的问题就是,人们是否不需要在现实的世界中辛苦的劳动就可以维持着基本的生活,保证自己的肉体存在进而可以活在虚拟的世界中?

    其实,这个问题在当前来看是不可能的,人们不劳动还有吃有喝的在当前完全不可能,但是现在的科技已经使得整个社会在往这个方向上走,满足一个人的基本吃喝已经变得很容易了。相信大家都知道,随着人工智能的发展,现实中的许多工作都将被机器代替,未来百分之八十或者更高比例的工作都将消失,什么种粮食呀,衣食住行呀,都有机器来做,机器所产生的能量足够所有人日常的基本消耗,那么这个时候这些被取代工作的人都做什么呢?肯定的是,不会从事机器在做的事,没意义效率还低,不符合社会生产价值比,要么去学控制机器,要么什么也不做,反正有吃有喝。

    但是再来假设一下,如果社会真的到了百分之八九十的人什么都不做也可以生存的时候,这可能吗?显然也是不可能,那么解决方案就是社会肯定会出现另外一种形式的工作可以让大家有事干,一种就像电影中的那样,会出现一个虚拟的世界,大家在里面升级打怪,而虚拟世界就是由社会地位更高的人来设计与掌控着。假设没有这种世界呢?可能还会存在另外一种形式的世界,大家在里面有事做,曾经看过一个电影,也是讲未来以后大家不愁吃喝,到了我们说的这个境界,大家每天都在干什么呢?蹬脚踏车赚积分,就像健身房的那种脚踏车一样,大家赚积分就等同于现在的工作挣钱一样,不过形式变化了而已。

    其实这是人工智能发展的一个方向,可能还存在另一个方向,我们知道,现在各种人造器官啥的已经出来了,人可能会到长生不老时代,人本质也是一台高精密机器,和有意识的纯铁的机器人应该没什么区别,那么一个问题就是,人的所有器官乃至思想是否都可能转移?未来,只要人的思想可以以某种实体形式储存起来,那么就可以转移或者存在于另一个空间中,比如大家都储存在计算机里面,每个人其实就是一块内存而已,没有身体的概念,只有意识在里面,或者人的意识都储存在互联网上,都是一个个独有的信息而已,大家依然可以相互交流相互认识,只看规则怎么设计了。如果是这样,这种意识完全可以虚拟化为游戏角色,这个时候,虚拟世界就真的是现实世界了,而世界的规则,依然是那些位于金字塔顶端的意识(人)所设计的。

    脑洞开的有点大了,未来是什么样的谁知道呢?不管怎样,有些东西变了,而有些东西没变,变化的是形态,不变的是原理,一起期待吧!

    展开全文
  • 目睹了无数用户的热情、希望和失望,也经历了一次又一次的病毒流行所造成的恐惧,作为一个长期以来以电脑病毒为生的行业人士,感觉到有必要向大家讲述一些真实的病毒故事,在病毒和反病毒的世界里,已经充满了太多...
  • 提及虚拟化技术,从事虚拟机提供的美国VMware一直走在技术前沿,云端软件平台的问世,则为国内虚拟技术向世界的接轨起到推动作用。云端软件平台的创始人杨小锋在接受采访时表示,虚拟化技术早已被列为未来三年内...
  • 例如,无数的建议专栏针对以下问题做了一些变化:“我们为即将出生的婴儿选择了一个可爱的原始名字,并告诉了sister子。 现在,她给上周出生的孩子取了完全相同的名字。 简直不敢相信她偷了我们的婴儿名字。 ...
  • 在Python的世界里,没有一个模块能够像NumPy那样支撑并影响着整个生态系统:从科学计算到数据处理,从视觉识别到机器学习,从神经网络到虚拟现实,处处都有它的身影。无论是OpenCV/OpenGL,还是Pandas/Matplotlib,...

    1 前言

    在Python的世界里,没有一个模块能够像NumPy那样支撑并影响着整个生态系统:从科学计算到数据处理,从视觉识别到机器学习,从神经网络到虚拟现实,处处都有它的身影。无论是OpenCV、OpenGL,还是Pandas、Matplotlib,抑或是Scikti-learn、TensorFlow、Keras、Theano、PyTorch,无不依赖于NumPy,尤其是依赖它所创造的数组对象(numpy.ndarray)。

    NumPy几乎无所不能。NumPy最广为人知的能力是图像处理,而它最基础的应用是科学计算。我曾经在《C/C++/Java/Go/Rust,Python喊你来打擂:3秒钟内统计出小于1亿的素数个数》一文中应用NumPy将查找素数的速度提升到接近编译语言的程度。

    本文则是独辟蹊径,讨论如何使用NumPy发出声音,以及如何模拟吉他音色,最终生成CD级别的音乐文件。除了生成wave文件时用到标准模块wave,全部代码仅依赖NumPy单个模块。此外,采集吉他音频数据(供频谱分析用)和播放wave文件时,还用到了PyAudio模块。如果有同学想重复频谱分析、使用代码播放wave文件,请使用如下的命令安装PyAudio模块。

    pip install PyAudio
    

    2 发出单一频率的声音

    想用NumPy弹奏吉他,先得让NumPy发出声音,比如,生成频率为196Hz(吉他3弦空弦音的频率)且持续3秒钟的声音。这需要3x196=588个周期的波形。假定采样频率为22.05kHz(相当于调频收音机的音质),3秒钟会采集到66150个数据。如果每个数据用两个字节的整数表示,则声音幅度的动态范围从-32768到32767。

    以下代码在[0,1176π][0,1176\pi]之间均匀采样66150点,求其正弦值,逐点连线,即可得到频率为196Hz、持续时间3秒、量化精度16位、采样频率为22.05kHz的正弦波。

    >>> import numpy as np
    >>> import matplotlib.pyplot as plt
    >>> x = np.linspace(0, 1176*np.pi, 66150, endpoint=False)
    >>> y = np.sin(x) * 32767
    >>> y.dtype
    dtype('float64')
    >>> y = y.astype(np.int16)
    >>> y.dtype
    dtype('int16')
    >>> plt.plot(x, y, color='green')
    >>> plt.show()
    

    下图左侧画出了全部66150个点,图像变成绿色块了;右侧只画出了前1000个点,可以看出清晰的正弦波形。
    在这里插入图片描述

    现在,声波有了,怎样才能听到声音呢?用PyAudio模块可以直接在声卡上播放这个数据(后面的代码有实现),也可以借助于Python的标准模块wave将声波数据保存为wave文件。wave模块是一个读写后缀名为.wav文件的工具模块,用起来非常简单。

    >>> import wave
    >>> with wave.open(r'd:\sound_196Hz_3s.wav', 'wb') as fp:
    		fp.setparams((1, 2, 22050, 0, 'NONE', 'NONE'))
    		fp.writeframes(y.tobytes())
    

    去D盘下看看,多了一个名为sound_196Hz_3s.wav的文件。点击并播放它,就会听到类似轮船开动时的汽笛声。

    3 模拟吉他音色

    刚才生成的声音,虽然和吉他3弦的空弦音频率相同,但听起来却一点不像吉他。那么吉他发出的声音是什么样的呢?下图是我用声卡采集的吉他1弦和2弦的空弦音的波形图,时长大约4秒钟左右。
    在这里插入图片描述
    下面是采集声音的代码。有兴趣的同学可以拿出吉他或者其他乐器录制一段,然后做一下频谱分析。

    import pyaudio
    import numpy as np
    import time
    
    def capture(rate, chunk):
        pa = pyaudio.PyAudio()
        stream = pa.open(
            format = pyaudio.paInt16,       # 设置量化精度(每个采样数据占用的位数)
            channels = 1,                   # 设置单声道模式           
            rate = 22050,                   # 设置采样频率
            frames_per_buffer = 2205,       # 设置声卡读写缓冲区     
            input = True                    # 设置声卡输出模式
        )
        
        data = list()
        while len(data) < 50:
            data.append(np.frombuffer(stream.read(2205), dtype=np.int16))
        stream.close()
        pa.terminate()
        
        return np.hstack(data)
    
    if __name__ == '__main__':
        for i in range(5):
            print(5-i)
            time.sleep(1)
        print('Start')
        
        data = capture(22050, 1024)
        np.save('吉他10.npy', data)
    

    NumPy提供了快速傅里叶分析工具,可以分析刚才采集到的吉他声音的频率成分及其强度。关于傅里叶分析,有兴趣的同学可以翻阅我的博文《假期无聊,我用傅里叶变换做了一个频率计,吉他定调口哨定音,样样好使!》

    import numpy as np
    import matplotlib.pyplot as plt
    import time
    import wave
    
    plt.rcParams['font.sans-serif'] = ['FangSong']
    plt.rcParams['axes.unicode_minus'] = False
    
    d1 = np.load('吉他10.npy')
    d2 = np.load('吉他20.npy')
    
    plt.subplot(221)
    plt.plot(d1, c='g')
    plt.title('吉他1弦空弦音')
    plt.subplot(222)
    plt.plot(d2, c='m')
    plt.title('吉他2弦空弦音')
    
    fd1 = np.fft.fft(d1[22050:44100]) # 截取吉他1弦空弦音1秒钟的数据进行傅里叶分析
    fd2 = np.fft.fft(d2[22050:44100]) # 截取吉他2弦空弦音1秒钟的数据进行傅里叶分析
    
    plt.subplot(223)
    plt.plot(np.abs(fd1[:11025]/22050), c='g')
    plt.title('吉他1弦单边频谱图')
    plt.subplot(224)
    plt.plot(np.abs(fd2[:11025]/22050), c='m')
    plt.title('吉他2弦单边频谱图')
    plt.show()
    

    不难看出,吉他发出的声音有以下两个特点:

    1. 声音幅度在振动中逐渐变小
    2. 频谱显示存在较强幅度的二倍频、三倍频、四倍频
    >>> import numpy as np
    >>> import matplotlib.pyplot as plt
    >>> x = np.linspace(0, 3*np.pi, 22050, endpoint=False)
    >>> y1 = 1 - x/(10*np.pi) + (1-x/(6*np.pi))*np.sin(x)*0.5
    >>> x = np.arange(3*22050)/22050
    >>> y2 = 0.7*np.exp(-x)
    >>> GUITAR_EFFECT_ARRAY = np.hstack((y1, y2))
    >>> y_guitar = y*GUITAR_EFFECT_ARRAY[:y.shape[0]]
    >>> plt.subplot(121)
    >>> plt.plot(GUITAR_EFFECT_ARRAY)
    >>> plt.subplot(122)
    >>> plt.plot(y_guitar)
    >>> plt.show()
    

    上面的代码,生成了一个模拟吉他波形的包络线,将等幅的正弦波模拟成吉他波形。效果如下图所示。
    在这里插入图片描述
    解决了声波的振幅衰减,还需要叠加二倍频、三倍频、四倍频。对于NumPy来说,这都是小菜一碟。

    >>> import numpy as np
    >>> import matplotlib.pyplot as plt
    >>> plt.rcParams['font.sans-serif'] = ['FangSong']
    >>> plt.rcParams['axes.unicode_minus'] = False
    >>> x1 = np.linspace(0, 4*np.pi, 300)
    >>> x2 = np.linspace(0, 8*np.pi, 300)
    >>> x3 = np.linspace(0, 12*np.pi, 300)
    >>> y1 = np.sin(x1)
    >>> y2 = np.sin(x2)
    >>> y3 = np.sin(x3)
    >>> y = np.sum(np.dstack((y1,y2,y3))[0], axis=1)
    >>> plt.subplot(221)
    >>> plt.title('基波')
    >>> plt.plot(y1, c='be')
    >>> plt.subplot(222)
    >>> plt.title('二倍频')
    >>> plt.plot(y2, c='cn')
    >>> plt.subplot(223)
    >>> plt.title('三倍频')
    >>> plt.plot(y3, c='y')
    >>> plt.subplot(224)
    >>> plt.title('复合波形')
    >>> plt.plot(y, c='m')
    >>> plt.show()
    

    不同频率的波形叠加在一起,效果如下图所示。
    在这里插入图片描述

    4 弹出吉他上所有的音符

    写到这里,必须要感谢中国古代的一位贵族——明朝皇室子弟朱载堉。他是一位被严重低估了的天才,他也是我认为最类似以解决数学问题为乐趣的欧洲贵族、最配得上贵族这一称号的中国人之一。他的主要学术成果是十二平均律,经过传教士利玛窦传到西方后,直接导致了西方现代音乐理论的兴起。朱载堉同时也是手工开方的先驱,他自制81档算盘开12次方,堪称前无古人后无来者。

    扯远了。如果理解十二平均律的话,很容易计算出吉他上所有品格的音频频率。简单说,同一根弦上,从低到高所有品格的频率是一个等比数列,比例为212\sqrt[12]{2}。知道A=440Hz的话,也很容易根据十二平均律计算出从1弦到6弦的频率分别为329.6Hz、246.9Hz、196.0Hz、146.8Hz、110.0Hz、82.4Hz。

    这里定义1弦空弦用字符串’10’表示,1弦3品用字符串’13’表示,字符串’212’则表示2弦12品,字符串’0’则表示休止。计算吉他上指定弦品音频频率的代码如下。

    def get_frequency(pos):
        """返回指定弦品pos的频率"""
        
        fs = (329.6, 246.9, 196.0, 146.8, 110.0, 82.4)
        if pos[0] == '0':
            return 0
        else:
            return fs[int(pos[0])-1] * pow(2, int(pos[1:])/12)
    

    5 吉他谱的格式约定

    仅有吉他弦品的表示法还不够,还需要定义每个音符的时值表示。这里约定使用节拍数表示。如果以4分音符为1拍,则4表示全音符,2表示2分音符,1表示4分音符,0.5表示8分音符,0.25表示16分音符,依次类推。

    有了吉他弦品和时值的表示,如何描述吉他谱呢?这里约定,一个吉他谱是若干乐谱小节的有序集合,每个乐谱小节又是多个声部的有序集合,每个声部又是一根琴弦上品格和时值的元组的有序集合。这里说的有序集合,就是Pytho的列表。下面是根据这个约定翻译过来的“天空之城”的序曲部分。

    castle_in_the_sky= [
        [ # 第1节
            [('10',0.5),('12',0.5)] # 1弦
        ],
        [ # 第2节
            [('13',1.5),('12',0.5),('13',1),('13',0.5),('17',0.5)], # 1弦
            [('0',1),('20',3)], # 2弦
            [('0',0.5),('30',2),('30',1.5)], # 3弦
            [('60',2),('60',2)] # 6弦
        ],
        [ # 第3节
            [('12',4)], # 1弦
            [('0',1),('23',2),('20',1)], # 2弦
            [('0',0.5),('32',1),('32',2.5)], # 3弦
            [('40',2),('40',2)] # 4弦
        ],
        [ # 第4节
            [('10',2),('10',1),('13',1)], # 1弦
            [('21',1.5),('23',2.5)], # 2弦
            [('0',1),('30',1.5),('30',1),('30',0.5)], # 3弦
            [('0',0.5),('42',3.5)], # 4弦
            [('53',4)] # 5弦
        ],
        [ # 第5节
            [('23',3),('20',1)], # 2弦
            [('0',1),('30',1),('30',2)], # 3弦
            [('0',0.5),('40',1),('40',2.5)], # 4弦
            [('52',4)] # 5弦
        ],
        [ # 第6节
            [('0',2.5),('13',1.5)], # 1弦
            [('21',1.5),('20',0.5),('21',2)], # 2弦
            [('0',1),('30',2.5),('30',0.5)], # 3弦
            [('0',0.5),('42',2.5),('42',1)], # 4弦
            [('50',2),('50',2)] # 5弦
        ],
        [ # 第7节
            [('0',3),('13',0.5),('13',0.5)], # 1弦
            [('20',2),('20',2)], # 2弦
            [('0',1),('30',3)], # 3弦
            [('0',0.5),('42',1),('42',2.5)], # 4弦
            [('60',4)] # 6弦
        ],
        [ # 第8节
            [('12',3),('12',0.5),('10',0.5)], # 1弦
            [('0',1.5),('22',0.5),('22',2)], # 2弦
            [('0',1),('33',1.5),('33',1.5)], # 3弦
            [('0',0.5),('44',3.5)], # 4弦
            [('62',2),('62',2)] # 6弦
        ],
        [ # 第9节
            [('12',2),('12',2)], # 1弦
            [('0',1.5),('24',0.5),('24',2)], # 2弦
            [('0',1),('34',1),('34',2)], # 3弦
            [('0',0.5),('44',1.5),('44',2)], # 4弦
            [('51',4)] # 5弦
        ]
    ]
    

    6 弹奏吉他谱

    有了以上这些储备,写一段弹奏吉他谱的代码就是水到渠成了。全部代码不足100行,重点位置已有注释。

    import numpy as np
    import wave
    import pyaudio
    
    SPEED = 80 # 用每分钟节拍数表示弹奏速度
    FRAME_RATE = 44100 # 采样速率(44100为CD音质,22050为调频广播音质)
    STEREO = True # 立体声(双声道)
    
    # 生成吉他音色包络线
    x = np.linspace(0, 3*np.pi, 2*int(FRAME_RATE*60/SPEED), endpoint=False)
    y1 = 1 - x/(10*np.pi) + (1-x/(6*np.pi))*np.sin(x)*0.5
    x = np.arange(6*int(FRAME_RATE*60/SPEED))/int(FRAME_RATE*60/SPEED)
    y2 = 0.7*np.exp(-x)
    GUITAR_EFFECT_ARRAY = np.hstack((y1, y2))
    
    def get_frequency(pos):
        """返回指定弦品pos的频率"""
        
        fs = (329.6, 246.9, 196.0, 146.8, 110.0, 82.4)
        if pos[0] == '0':
            return 0
        else:
            return fs[int(pos[0])-1] * pow(2, int(pos[1:])/12)
    
    def get_wave(f, beat):
        """返回指定频率和节拍数的波形数据"""
        
        data = list()
        duration = beat*60/SPEED
        sample_num = int(duration*FRAME_RATE)
        
        for k, p in [(1,0.4), (2,0.3), (3,0.2), (4,0.1)]:
            x = np.linspace(0, 2*duration*f*k*np.pi, sample_num, endpoint=False)
            y = np.sin(x)*p
            data.append(y)
        
        return guitar_effect(np.sum(np.dstack(data)[0], axis=1))
    
    def guitar_effect(data):
        """将等幅声波变成吉他音色的声波数据"""
        
        return data*GUITAR_EFFECT_ARRAY[:data.shape[0]]
    
    def play(melody, wave_file=None):
        """弹奏吉他谱,若wave_file存在,同时生成.wav文件"""
        
        data = list()
        for section in melody:
            data_section = list()
            for cord in section:
                data_cord = list()
                for pos, beat in cord:
                    f = get_frequency(pos)
                    dw = get_wave(f, beat)
                    data_cord.append(dw)
                data_cord = np.hstack(data_cord)
                data_section.append(data_cord)
            
            d = data_section[0]
            for i in range(1, len(data_section)):
                if d.shape[0] > data_section[i].shape[0]:
                    d[:data_section[i].shape[0]] += data_section[i]
                else:
                    data_section[i][:d.shape[0]] += d
                    d = data_section[i]
            data.append(d)
        
        data = np.hstack(data)
        data = data*20000/data.max()
        data = data.astype(np.int16)
        
        if STEREO:
            blank = np.zeros(int(0.006*FRAME_RATE), dtype=np.int16)
            d_left = np.hstack((data, blank))
            d_right = np.hstack((blank, data))
            data = np.dstack((d_left, d_right))[0].ravel()
        
        if wave_file:
            with wave.open(wave_file, 'wb') as fp:
                fp.setparams((int(STEREO)+1, 2, FRAME_RATE, 0, 'NONE', 'NONE'))
                fp.writeframes(data.tobytes())
        
        pa = pyaudio.PyAudio()
        stream = pa.open(
            format = pyaudio.paInt16,   # 设置量化精度:每个采样数据占用的位数
            channels = int(STEREO)+1,   # 设置通道数量           
            rate = FRAME_RATE,          # 设置采样频率
            frames_per_buffer = 1024,   # 设置声卡读写缓冲区     
            output = True               # 设置声卡输出模式
        )
        
        for i in range(0, data.shape[0], 1024):
            stream.write(data[i:i+1024].tobytes())
        
        stream.stop_stream()
        stream.close()
        pa.terminate()
    

    用哪一首曲子来体验一下代码的效果呢?爱的罗曼史!这首曲子第二段的指法实在变态,对于手指僵硬的我来说,这辈子是不可能弹出第二段的。现在终于有机会弹出我所理解的这首世界名曲了。下面是根据约定翻译过来的吉他名曲“爱的罗曼史”的乐谱。

    romance= [
        [
            [('17',1),('17',1),('17',1)],
            [('0',0.33),('20',1),('20',1),('20',0.66)],
            [('0',0.66),('30',1),('30',1),('30',0.33)],
            [('60',3)]
        ],
        [
            [('17',1),('15',1),('13',1)],
            [('0',0.33),('20',1),('20',1),('20',0.66)],
            [('0',0.66),('30',1),('30',1),('30',0.33)],
            [('60',3)]
        ],
        [
            [('13',1),('12',1),('10',1)],
            [('0',0.33),('20',1),('20',1),('20',0.66)],
            [('0',0.66),('30',1),('30',1),('30',0.33)],
            [('60',3)]
        ],
        [
            [('10',1),('13',1),('17',1)],
            [('0',0.33),('20',1),('20',1),('20',0.66)],
            [('0',0.66),('30',1),('30',1),('30',0.33)],
            [('60',3)]
        ],
        [
            [('112',1),('112',1),('112',1)],
            [('0',0.33),('20',1),('20',1),('20',0.66)],
            [('0',0.66),('30',1),('30',1),('30',0.33)],
            [('60',3)]
        ],
        [
            [('112',1),('110',1),('18',1)],
            [('0',0.33),('20',1),('20',1),('20',0.66)],
            [('0',0.66),('30',1),('30',1),('30',0.33)],
            [('60',3)]
        ],
        [
            [('18',1),('17',1),('15',1)],
            [('0',0.33),('25',1),('25',1),('25',0.66)],
            [('0',0.66),('35',1),('35',1),('35',0.33)],
            [('50',3)]
        ],
        [
            [('15',1),('17',1),('18',1)],
            [('0',0.33),('25',1),('25',1),('25',0.66)],
            [('0',0.66),('35',1),('35',1),('35',0.33)],
            [('50',3)]
        ],
        [
            [('17',1),('18',1),('17',1)],
            [('0',0.33),('27',1),('27',1),('27',0.66)],
            [('0',0.66),('38',1),('38',1),('38',0.33)],
            [('67',3)]
        ],
        [
            [('111',1),('18',1),('17',1)],
            [('0',0.33),('27',1),('27',1),('27',0.66)],
            [('0',0.66),('38',1),('38',1),('38',0.33)],
            [('67',3)]
        ],
        [
            [('17',1),('15',1),('13',1)],
            [('0',0.33),('20',1),('20',1),('20',0.66)],
            [('0',0.66),('30',1),('30',1),('30',0.33)],
            [('60',3)]
        ],
        [
            [('13',1),('12',1),('10',1)],
            [('0',0.33),('20',1),('20',1),('20',0.66)],
            [('0',0.66),('30',1),('30',1),('30',0.33)],
            [('60',3)]
        ],
        [
            [('12',1),('12',1),('12',1)],
            [('0',0.33),('20',1),('20',1),('20',0.66)],
            [('0',0.66),('32',1),('32',1),('32',0.33)],
            [('52',3)]
        ],
        [
            [('12',1),('13',1),('12',1)],
            [('0',0.33),('20',1),('20',1),('20',0.66)],
            [('0',0.66),('32',1),('32',1),('32',0.33)],
            [('52',3)]
        ],
        [
            [('10',1),('10',1),('10',1)],
            [('0',0.33),('20',1),('20',1),('20',0.66)],
            [('0',0.66),('30',1),('30',1),('30',0.33)],
            [('42',1),('52',1),('63',1)]
        ],
        [
            [('10',3)],
            [('20',3)],
            [('30',3)],
            [('60',3)]
        ],
        [
            [('14',1),('14',1),('14',1)],
            [('0',0.33),('20',1),('20',1),('20',0.66)],
            [('0',0.66),('31',1),('31',1),('31',0.33)],
            [('60',3)]
        ],
        [
            [('14',1),('12',1),('10',1)],
            [('0',0.33),('20',1),('20',1),('20',0.66)],
            [('0',0.66),('31',1),('31',1),('31',0.33)],
            [('60',3)]
        ],
        [
            [('25',1),('24',1),('24',1)],
            [('0',0.33),('32',1),('32',1),('32',0.66)],
            [('0',0.66),('44',1),('44',1),('44',0.33)],
            [('50',3)]
        ],
        [
            [('24',1),('23',1),('24',1)],
            [('0',0.33),('32',1),('32',1),('32',0.66)],
            [('0',0.66),('44',1),('44',1),('44',0.33)],
            [('50',3)]
        ],
        [
            [('19',1),('19',1),('19',1)],
            [('0',0.33),('27',1),('27',1),('27',0.66)],
            [('0',0.66),('38',1),('38',1),('38',0.33)],
            [('67',3)]
        ],
        [
            [('19',1),('111',1),('19',1)],
            [('0',0.33),('27',1),('27',1),('27',0.66)],
            [('0',0.66),('38',1),('38',1),('38',0.33)],
            [('67',3)]
        ],
        [
            [('19',1),('17',1),('17',1)],
            [('0',0.33),('29',1),('29',1),('29',0.66)],
            [('0',0.66),('39',1),('39',1),('39',0.33)],
            [('60',3)]
        ],
        [
            [('17',1),('19',1),('111',1)],
            [('0',0.33),('29',1),('29',1),('29',0.66)],
            [('0',0.66),('39',1),('39',1),('39',0.33)],
            [('60',3)]
        ],
        [
            [('112',1),('112',1),('112',1)],
            [('0',0.33),('29',1),('29',1),('29',0.66)],
            [('0',0.66),('39',1),('39',1),('39',0.33)],
            [('60',3)]
        ],
        [
            [('112',1),('111',1),('110',1)],
            [('0',0.33),('29',1),('29',1),('29',0.66)],
            [('0',0.66),('39',1),('39',1),('39',0.33)],
            [('60',3)]
        ],
        [
            [('19',1),('19',1),('19',1)],
            [('0',0.33),('25',1),('25',1),('25',0.66)],
            [('0',0.66),('36',1),('36',1),('36',0.33)],
            [('50',3)]
        ],
        [
            [('19',1),('17',1),('15',1)],
            [('0',0.33),('25',1),('25',1),('25',0.66)],
            [('0',0.66),('36',1),('36',1),('36',0.33)],
            [('50',3)]
        ],
        [
            [('14',1),('14',1),('14',1)],
            [('0',0.33),('24',1),('24',1),('24',0.66)],
            [('0',0.66),('32',1),('32',1),('32',0.33)],
            [('52',3)]
        ],
        [
            [('14',1),('15',1),('12',1)],
            [('0',0.33),('24',1),('24',1),('24',0.66)],
            [('0',0.66),('32',1),('32',1),('32',0.33)],
            [('52',3)]
        ],
        [
            [('10',1),('10',1),('10',1)],
            [('0',0.33),('20',1),('20',1),('20',0.66)],
            [('0',0.66),('31',1),('31',1),('31',0.33)],
            [('42',1),('52',1),('64',1)]
        ],
        [
            [('10',3)],
            [('20',3)],
            [('30',3)],
            [('60',3)]
        ]
    ]
    

    激动人心的时刻来了,运行下面的代码,美妙的旋律就会从你的声卡中源源不断地飞出来。

    play(romance)
    

    若想同时保存成文件,请使用下面的命令。

    play(romance, '爱的罗曼史.wav')
    
    展开全文
  • (YiViAn 2016年4月18日)虚拟现实(VR)是一个可以实现你所有的愿望的神奇空间, 在这里没有痛苦和折磨。 只是开玩笑而已。 好, 严肃点, 虚拟现实是...简单来说, 在虚拟现实中, 我们创造一个世界并邀请人们进...
    (YiViAn 2016年4月18日)虚拟现实(VR)是一个可以实现你所有的愿望的神奇空间, 在这里没有痛苦和折磨。 我只是开玩笑而已。 好了, 严肃点, 虚拟现实是指通过电脑技术来模拟现实。 不同于以往的用户界面, 虚拟现实带给用户一种沉浸感。 用户在虚拟现实中并不是单单的看着屏幕, 而是沉浸于3D世界中, 并且可以与其进行互动。

    简单来说, 在虚拟现实中, 我们创造出一个世界并邀请人们进入其中。 这就意味着, 在虚拟现实中, 你不仅仅是一个旁观者, 你还是一个参与者, 你的一举一动都会影响这个世界。 很牛逼是吧。

    [b]本指南的目的[/b]

    这本指南适用于所有想涉足虚拟现实和电影制作的人。 这包括虚拟现实游戏的开发者, 电影制作者和刚刚接触这项新科技的业余爱好者。

    我不想从电影制作的理论面进行展开, 这不是这本指南的主要内容。 我也不会教你选择怎样的设备, 什么样的镜头, 或者如何编辑, 该用什么样的软件来进行后期制作。 我要讲的是成功的电影制作者们是如何应用虚拟现实技术和一些方法技巧。 我只想告诉大家如何讲一个好的故事。

    我们需要知道的是, 我们所有人都在试验和学习虚拟现实技术。 因此, 你不会知道太多关于这方面的书籍。 虚拟现实技术的进步和学习是正在进行时。

    本指南的目的是为了让你明白虚拟现实是可以实现的。 这项新媒体所带给你的力量和创造力不逊于传统的电影行业, 甚至可以带给你更多。 但是正如蜘蛛侠所说的一样:“能力越大,责任越大。” 我希望你能避开那些会阻碍你参与到下一部令人惊叹的虚拟现实题材电影的陷阱。

    同时, 我也想感谢你抽空阅读这本指南。 从2016年起, 虚拟现实已经开始掀起波浪了, 但是对于那些已经感受到这浪潮并且有着良好的体验的人来说, 他们需要好的内容。 这也是你阅读这本指南的目的。 其实在你阅读这本指南的时候, 你已经踏入了一个新的时代, 你已经在不知不觉地创造历史了。

    拟现实曾经也只是一个只存在于科幻小说中的一个梦, 但正如电脑和智能手机一样, 这个梦正在实现

    — 扎克伯格

    360度视频,也叫做3D虚拟现实或者立体虚拟现实,是通过多个镜头从360度全方位捕捉影像。有些人或许会说360度视频并不能算是虚拟现实。严格来说,他们是正确的。一个标准的360度视频仅仅是一个覆盖在球面上的平面视频。我们可以想象一下,一个球体世界地图,通过虚拟现实技术,你的头在这个球体里面,随着你的头部移动,连接在你头部的设备也会随之移动,然后给你一种身在地图之中的感觉。

    360度视频通过会通过立体3D来增强前景和后景之间的深度, 以此来提高浸入的深度。 想做到这样, 我们需要两个镜头并列拍摄影像, 这样子每个眼睛在观看的时候都会有不同角度。 如果拍摄手法不正确, 影像将会变得奇怪, 但是拍摄手法正确的话, 其视觉感受是超棒的。 通过虚拟现实技术的立体3D, 视频中的深度信息将会在覆盖在球面上。 因为拍摄时镜头是平行并列的, 操作起来是不容易的。 每一片段中任何细小差错或者缝隙都会在3D影像中扩大呈现。 我们的两个眼睛会在不同的地方看到这些影像, 而这些影像将会让我们观感变差, 甚至遭成头疼, 头晕和眼睛疲劳。

    360度视频和虚拟现实视频的目的是一致的—— 也就是让使用者完全沉浸在这个创造的世界中。 一旦使用者在这个创造的场景中觉得舒服的话,我们就可以把他带进故事之中了。

    关于虚拟现实叙事方式和传统叙事方式,我们需要知道什么呢?

    虚拟现实技术已经开始应用了。我们一直渴望得到的科技已经摆在我们面前了;我们可以把这项新媒体告诉世界上的所有人,我们可以告诉他们使用虚拟现实技术的正确方式。这就意味着,需要建立一个新的习惯,尤其是告诉他们在我们创造的这个世界里面他们可以做什么。

    以前, 我们只有默剧还有影院里面的黑白电影。然后我们学习如何使用摄影设备, 如何平移镜头, 并且尝试不同的拍摄技术和不同的视点, 变焦拍摄, 交错剪辑, 变换场景等等。 由此, 电影拍摄技术这门学科诞生了。

    正如哑剧对电影的意义, 虚拟现实将会完全改变电影行业。 不同的视点和电影拍摄技术将会打破把观众和演员分离的第四堵墙。 这也是我们为什么说在虚拟现实中, 你需要想出一个创造性的点子来引导你的观众。

    在虚拟现实中, 观众并不是被动地观看屏幕, 你的观众是在“屏幕”之中的, 他们可以自由地观察四周, 在不远的将来, 他们也可以在其中进行移动, 这样子说, 你就可以想象虚拟现实的影响将会有多大。

    我们把这种“身在其中”的独特知觉感受叫做临在感。

    克利斯米尔克(Chris Milk),VRSE和VRSE工作室的建立者,把虚拟现实称为终极共鸣机器。

    很难把虚拟现实解析清楚, 因为虚拟现实是一个带感官性的媒介。你感觉你是身在其中的。 虚拟现实也是一个机器,只是你在这台机器里面而已,你感觉这就是现实生活,这就是真实。你感觉你是存在于这个世界里面的,这个世界里的人物是真实存在的。

    对于讲故事的人来说, 你首先想到的可能是把你在影视学校学到的所有知识都应用到这个新媒介之中。 然而这样子做可能会有不好的后果, 因为你很快就会发现传统的电影制作规则和技巧并不适用于虚拟现实技术。 也就是说我们需要记住,我们并不需要对我们的故事进行改动, 我们只是需要在虚拟现实中改变我们的叙事方式而已。

    在你开始制作电影之前… 我指的是在你写故事之前

    如果虚拟现实电影制作是可以实现的话, 那么我们可能会有一些疑惑。 大部分的疑惑是因为我们不了解360度视频和虚拟现实之间的差异。 一个基本的差别是——交互性

    在现实中,你的动作(和内心思考)都是有影响的。 你的决定会对你周围的世界,或者你对这世界的体验产生影响,而有时候甚至会产生极其深远,不可预测的影响。

    除非你相信某种结果,否则这些改变是不会发生。

    虚拟现实也应该遵循相同的原则。 虚拟现实的决定应该是以一种令人意外的方式来改变已经构筑好的世界。 这就意味着,虚拟现实世界不会按照预定的脚本来进行。

    原则:

    现在已经有很多工作室和艺术家开展了虚拟现实项目; 而我准备了几个核心的原则,或者说公理。 在你开始拍摄影片之前,你需要考虑这些原则。

    他们是:

    为了写出一个好的故事,必须做出妥协。

    把自己当成一个引导者而不是一个导演。你只能够这样子做, 因为你要到给观众的不仅仅是一个框框, 而是一个完整的世界。

    虚拟现实的核心是体验和临在感。 作为一个导演, 你需要把你的观众的注意力集中在你的影片之中, 他们不可以更换频道或者看向别处, 而虚拟现实设备是戴在观众这的头上的, 而当观众脱下这台设备之后,他们所看到的东西将会有很大的改变。

    虚拟现实叙事更像是在玩一款电子游戏。

    [b]贴士1: 慢慢来[/b]

    第一个实现的任务是让观众感都舒服。 Oculus Story Studio 就推荐观众先观看一段30秒的介绍视频。 这会使观众先适应这个头显设备, 并且了解熟悉这个新的媒介。

    关于虚拟现实叙事方式的终极入门指南

    《迷失》

    对于大部分人来说, 30秒的视频可以让他们适应这个环境, 并且放松下来。 在《迷失》中, 观众一开始是在黑暗的空间中, 然后一丝光芒进入到视线之中: 有一个萤火虫出现,从你的左边飞到右边。 当观众的视线跟随这个萤火虫移动的时候,观众将会逐渐的适应虚拟现实的环境。 而这之后你会发现你前面出现了一片森林, 然后背景将会逐渐丰富起来。

    大部分观众由于习惯看的是平板屏幕,所以第一次使用虚拟现实技术的时候,他们很可以只是盯着前面, 这个时候你可以通过语音或者视觉线索来引导他们往四周看。 让你的观众发挥他们的好奇心。

    [b]贴士2: 引导使用者的视线或者什么都不做![/b]

    你需要提前决定是引领他们来进行这个故事和引导他的视线方向吗?不鼓励观众看其他的地方吗?

    还是说给使用者完全的自由? 作为导演, 让出控制权是一个全新的概念。 如果提示就在使用者的前面,而使用者还是想一直看着天空的话, 虚拟现实的导演就需要接受这个事实。 而电影院有足够多的手法来讲述故事和引导观众的视线。

    你可以使用不同的光线和语音提示, 或者是角色的视点集中, 甚至是动态的提示。 我们需要记住的是, 有两样事情是可以吸引我们的视线的: 移动的物体和不同的画面。

    控制权就像一把双面剑, 使用者可能会感觉不真实。 因为虚拟现实是关乎观众的自由, 所以我建议你还是接受吧。 如果你想把奇异的梦带给世界,那么你就不要把时间和精力花在如何掌握控制权上 , 独特的体验才能让人们感觉真实。

    [b]贴士3: 临在感[/b]

    完全浸入是虚拟现实叙事的最终目标。 第一个遇到的难题是如何克服一些基本的技术性难题。 这就意味着你需要预防和修复屏幕衔接的问题; 你还需要使用最高画质和合适的声响设备。 最后一件事情是你需要消除使用过程中出现的头疼和晕眩, 这是向你的观众继续展现你所创造的世界的重要保证。

    第二, 你需要欺骗观众的大脑, 让大脑认为这个虚拟世界就是“真实的”还记得非常嫌疑犯中凯文 史派西的台词吗? “

    最巧妙的地方就是让人相信他不存在, 而就像这样子,他从人们的视线里消失了。

    坐落在蒙特利尔的 Felix & Paul 工作室在他们进行第一个项目的时候有一个 ”a-ha” 的时刻。 他们请来了一个业余的演员, 一个慈祥的中国老奶奶, 这位老奶奶走进教堂里面并且坐在镜头前面。 几秒钟后, 她看着这个镜头就像她在看着一个人似的。 这个20秒的视频令人们感到很震惊。 他们的脑袋一直在想着这个老太太。

    让角色看着你的观众。 这个亲密的连结会引起演员和观众之间真实的情感流动。 这也是虚拟现实如何打破那第四堵分离观众和观众之间的墙的。

    亨利

    有些情形你是不想你的观众注意到的, 尤其是一些动作场景例如汽车追逐和武打场景, 因为这些场景只有通过不同的角度来呈现才会显得更加合理。

    [b]贴士4: 节奏[/b]

    从平面屏幕到3D世界的这个转变一开始是巨大的,令人困惑的。 如果你可以成功令观众感觉舒服的话,那么你就完成了第一阶段的目标了。

    Oculus Story Studio正在使用“ 习惯和设置场景”的方法。 在 《迷失》这段视频中, 他们让萤火虫从左往右飞,以此来让观众适应周围观察这个概念。 在神秘森林出现之前,观众所看到的就只有这个萤火虫。

    你的观众,很可能都是还没适应虚拟现实电影的,对于大部分人来说, 这会是他们第一次的虚拟现实体验。 从电视屏幕到浸入环境所带来的信息深度的变换是巨大的, 你需要想想你要如何慢慢地引导他们进入你的故事之中。

    你还需要决定镜头的移动, 尤其是起伏的镜头, 因为这会造成晕眩。

    评价你的故事是不是有趣的是有一条细小的分界线的, 因为在虚拟现实中很多的事情都会在同一时间内发生, 大量信息的瞬间集中会令人感到很难适应。 但如果只有一件事情在发生, 那么这些场景又会变得很空和不真实。 虚拟现实应该模拟现实世界的体验。 Oculus把它称为“空间情节紧凑度” , 也就是围绕着我们的三维故事叙事方式。

    还记得我们第一个原则吗, 我们将不得不做出妥协。

    [b]贴士5: 有条件的叙事方式[/b]

    《质量效应》是一款流行的科幻游戏, 玩家将扮演指挥官薛帕德的角色。 玩家需要指挥星际战舰“诺曼底”号, 并且选择任务。 随着游戏进程, 我们需要做出一些艰难的决定。 而这些决定将会带来巨大的影响, 例如造成船员的死亡, 某个特定种族的灭族, 甚至整个星球的毁灭。

    关于虚拟现实叙事方式的终极入门指南

    《质量效应》, 他们做出了自己的决定, 就让他们为自己的选择负责吧…

    在虚拟现实中, 我们可以把决定权交给我们的观众。 这个选择权的范围有多大完全是我们的决定。 观众可以先想好再做决定。 例如, 我们的观众来到了一个检查站, 他必须做出决定才能够继续剧情。 选择一条道路吧, 到底我们的观众是选择红色药丸爱是蓝色药丸呢?

    关于虚拟现实叙事方式的终极入门指南

    你会选择一个红色药丸还是蓝色药丸呢?

    但是不管观众选择如何, 我们都可以预定一个回应。 虚拟现实科技已经超越了一般的内容体验。 它可以把视觉,听觉和感觉同时组合起来。 当观众给出语音或者手势输入的时候, 故事的视觉空间可以相应做出回应。 技术上这还是有点困难, 但是现在虚拟现实已经比原来有了很大的进步了。

    假设你在一个特定的场景中, 演员和观众坐在一辆车里面。 而街上看上去很空,这个时候司机开始加速了。 当车辆来到斑马线的时候,有一个小孩跑到了街上。 如果司机不及时刹车的话, 意外就会发生了。 如果我们惊叫提醒, 司机将会尽力的把车停下来, 但是如果我们没有注意到这个孩子或者什么都不做的时候,结果就不会很不一样。

    [b]贴士6: 实验[/b]

    虚拟现实是一个充满惊喜的沙盘, 在这里我们可以找到无数的工具和诀窍。 这些贴士更像是建议,而不是电影制作的法则。 然而,如果我们的贴士是法则的话, 我们应该有随时打破这些法则的准备。

    亨利福特在一次著名的声明中说到:“ 如果我问客人想要什么产品的时候, 他们会回答说一头跑得更快的马。” 亨利福特并给客人找出一头更快的马, 相反他建造了一辆汽车。 在那时人们还没有汽车的概念。

    我可以大胆地跟你打赌, 虚拟现实叙事也将会是这样。 不要害怕犯错误, 因为这样子我们或是知道怎样做是不成功的,或者找出一个精妙的解决方法。 查尔斯因特异在把橡胶和硫磺滴进火炉中的时候意外发明了硫化橡胶。 令他惊奇的是, 橡胶并没有因此融化,反而变得更加坚固了。 在今天这个意外的产品几乎被应用在每一台汽车中, 那就是轮胎。

    [b]贴士7: 测试, 测试, 测试[/b]

    在产品和服务推向市场之前, 都会经过很多次的测试。 这同样适用于你的虚拟现实产品。 我们已经和产品建立了一段发展的关系, 所以我们并不适合去测试我们的设计。 我们或许会过于批判或者宽容。

    理想来说, 我们应该把产品随机向陌生人展现, 因为他们对我们的结果并没有什么利益关系,而且他们不会打击到我们的自尊心。 他们的观察, 感受尤其是对我们产品的反应是无价之宝。(来源:今日头条)
    展开全文
  • 1.最最希望有一天能写一个借助麦克风和摄像头,进行声音和图像识别,然后再加入一些人工智能,创造一个虚拟的能够自我发展与屏幕前的交流的世界,里面包括各种现实世界和人们想象的各种动植物,人类,社会.........

    1.最最希望有一天能写一个借助麦克风和摄像头,进行声音和图像识别,然后再加入一些人工智能,创造一个虚拟的能够自我发展与屏幕前的我交流的世界,里面包括了各种现实世界和人们想象的各种动植物,人类,社会......,这个估计是我的幻想了,一个美好的梦想.......只要在我死之前能够实现其中的一个生物我就心满意足了啊......

    2.希望写一个3D的大型网络游戏,希望非常好玩,很多人玩,呵呵

    3.不过目前可能做的是一个vc的插件,它能够根据代码生成uml类图,也能够进行逆向工程,虽然已经有rose还有其他的专门的软件了,但是我总觉得不太符合我的习惯,而且像rose做得也太全面太大了吧,我只想要一个专门的vc/c++可用的代码生成器呀,这样的东西java倒是挺多的

    作了3年的程序员,也不知道是怎么回事,我总觉得我应该还有无数的潜能没有被发挥被利用。做了两家公司,每次呆了三个月就不想干了。

    第一家是个做车载GPS监控运营的私企,进去的时候我还差几个月没毕业,不过反正也没什么事情(我就是闲不住呀),我都不明白他们要我去干什么了,三个月里基本没有什么人找我写程序或者作其他的工作,秘书没找我做事,连谁是我的直接经理我也不知道,坐在分格子的办公室,也没看到谁讲话,真实的情况是,我坐下来以后基本上就看不到几个人!每个人都非常专注的盯着显示器,可能很忙吧,因为没什么人讲话所以我觉得连个笔调到地上整个办公室都听得见。哎,真是憋死我了,想不到第一次工作就是这个样子呀,所以我只好找些编程的书自己看,不然怎么样......我后来想着要是我的公司,肯定不会这么搞,请了人又不说有什么事......真是浪费资源呀,不光是他的工资不知怎么就给我了(其实也就1200),最重要的是我这个人才呀,我一直记得的就是不进则退啊。

    虽然后来的一年多,我由于天生聪明有才干(哎,就不用多说了)发展的还不错,但是从已开头就可以看出这家公司管理水平太差,我在那里是呆不下去了。你能想象在现在这样的社会主义国家里,一个博士(技术总监)能锤着桌子对我狂喊“我就是要剥削你”吗,我真是受不了了,这么明目张胆,他竟然还是武大的博士(从此我就下定决心,我要是有了孩子,千万不能让他进武大!),我觉得他只配去管理民工(没有贬义的意思,就是代指没有受过多少教育容易被欺压的人)。加上平时其他各个管理高层做出来的莫名其妙的事情,我呆了两年说什么也呆不下去了,就算是失业在家里睡觉我也不能干了。不过好在恰恰在那个时候,我现在的公司叫我去上班,当时好高兴啊,哈哈,终于脱离那个黑暗肮脏的克扣工资莫名其妙的破公司了!

    哎,我在第二家,也就是现在的公司做了五个月了,我现在又想要跳槽了(我应该不算是频繁跳槽跳上瘾的那一类吧)。这是一家大型的国企,软件其实不是它的主业。在经历过以前那种恶劣的环境后,我都习惯了哪种“把女人当男人用,把男人当牲口用”的环境,整天的勾心斗角,小心翼翼什么的,在现在,上班的时候还能看到许多人睡觉,玩游戏,聊天,尤其是女同事长期都聊着什么做菜小孩老公什么的,真是不习惯呀。

    我今天写累了,呵呵,我就是在上班的时候写的,在以前根本不能想象上班还可以上传写什么啊,呵呵,这个好处倒是蛮不错的:)

    好啦,下次有空再写。我表弟刚让我帮他写个管理病例的程序作为他的毕业论文的一部分。

    展开全文
  • 互联网的发展创造了一个虚拟的数字世界,在这个世界里用户可以看新闻、听音乐、追美剧、玩游戏以及购物,许多独立存在的物理介质不断地被数字化。今天移动互联网却开始呈现与互联网完全不同的发展特征,从比特世界...
  • 上帝创造世界需要7天, 创建一个虚拟世界需要几天? 第一天: 做一个camera 可以用鼠标旋转视角,awsd 平移视角, e,c 上下平移视角 建好地板, 一个空荡荡的世界出来。 关键点: 地板使用VertexBuffer...
  • 所以他创造了一个网络世界。 特鲁布肖所开发的MUD1(为区别这款游戏与MUD这一游戏类型,后文游戏名统一为MUD1)依然是一个纯文字的世界,没有任何图片,但是不同计算机前的玩家可以在游戏里共同冒险、交流。  与...
  • 其结合视频语音等富媒体通讯和等传统游戏的特点,以专业的视频语音直播为基础,各种极具可玩性和创造性的互动游戏为核心,致力于打造一个综合型的互联网富媒体娱乐平台。 嗨娱乐平台功能特色: 这是一款真人...
  • 虚拟锻造 约书亚·西蒙斯(Joshua Simons)-大学期末计划对当前的游戏制作系统感到沮丧,并希望做出更有趣,更像是实际...实现了一个简单的类来显示和连接顶点。 此类将具有关联的变量/功能,以便能够通过顶点传递
  • 如果把「客户端」想成是楼,把「数据」想成是水——「Model」就是这幢楼的蓄水池,提供充足的水源;「ViewModel」是将蓄水池里的水进行净化等加工的...就像《圣经》里描述的——上帝按照自己的样子创造了亚当这世上
  • 信息互联网时代,给我们带来巨大的财富,但是这不是人人皆有份的,社会...所以现在有一些公司,致力于在虚拟世界创造一个一个“人”,或者创造一个一个“身份”。 这些“人”会一直跟随你,你去哪里它...
  • 本文作者是位刚刚接触AR开发的年轻...对来说:增强现实(AR)本身已经非常棒,但是这次,我们会在现实世界和虚拟世界中加更多的交互。我们通过添加虚拟按钮来实现这功能,也就是说只需要简单的在AR世界中添加
  • 《十三度凶间》

    千次阅读 2007-01-12 13:29:00
    我们在这个世界里创造了虚拟世界,将它玩弄于股掌之间,到头来却发现我们的命运其实和我们所创造的虚拟世界是一样的,我们这个世界的上面还有一个掌控我们的世界,那么那个世界之上呢???究竟有多少层???这使...
  • 小组讨论时的问题

    2017-11-05 18:29:24
    这个星期四 我们cp2进行了小组讨论 主题是AR与我们的生活 我们讨论了一个小时左右 但是!绝大部分时间(最起码40分钟)都...和虚拟现实做个对比,VR就是创造一个完全取代现实的世界,让人感觉「怎么在这里?」,AR
  • 有点纳闷,机器之主在他创造虚拟世界中拥有无上的能力和权威,那他想解决任何问题不都轻轻松松吗?他想毁掉Zion,一个命令而已,就如同拔掉自家后院的杂草一样简单,又何必让机器如此大动周章,甚至屈膝让尼奥...
  • Silverlight游戏设计(Game Design):目录

    万次阅读 热门讨论 2010-03-25 17:29:00
    不断的在这个虚拟的轮回世界中扮演着一个一个的主角而无法自拔…感受着日本人给我们重温自家的三国史,体验着美国人引领我们探索那些只有他们才上过的太空,内心澎湃不只那一次两次,心碎…上帝创造凡人于这个...

空空如也

空空如也

1 2 3 4 5
收藏数 87
精华内容 34
关键字:

我创造了一个虚拟世界