OSG_王锐《最长的一帧》

合集下载

世界上时间最长的中文歌曲

世界上时间最长的中文歌曲

世界上时间最长的中文歌曲世界上时间最长的中文歌曲你知道是什么吗,结果一定让你大跌眼镜,下面就让小编带大家去了解一下吧。

世界上时间最长的中文歌曲大世界吉尼斯权威认证"世界最长中文歌曲"《陕西木有啥》时长为26分钟,分为2013(试水)版和2016(正式版)两个版本。

目前2016(正式版)正在制作当中,预估2016年年中首发。

《陕西木有啥》2013版由曲江一影董事长雷锁甲创意发起,全国十强导演阿齐亲任总监制及MV总导演,刘刚(玄乐队成员)词曲编创作、刘毅全程艺人统筹的大型音乐MV。

歌曲总长度达到26分钟,歌词近5100字,2013年12获得上海大世界基尼斯权威认证,获得世界最长中文歌曲,创下世界最长最多的歌曲长度和歌词记录,歌曲汇聚了近百位陕西籍名人,演唱由职业歌手、演员、选秀艺人、乐队组合、公众名人、陕西主持人等组成庞大的演唱团队,阵容及规模堪称一绝!出品机构曲江一影。

《陕西木有啥》2016版依然由曲江一影董事长雷锁甲创意发起,具体的音乐制作、编舞及MV拍摄团队目前出品方未给出具体人员,暂时不祥。

已知的部分运营团队人员有:项目执行总监钱铮、宣发张宇、策划张姣、后期团队莫志佳、摄制团队郭志鹏、外联王雷等。

正式版的《陕西木有啥》不但歌词进行了更改,所有的拍摄也将进行实景拍摄,艺人团队也做了大范围调整,主要以陕西籍艺人为主,包括各个行业的名人和领袖。

世界上时间最长的曲子美国作曲家约翰·凯奇的管风琴曲《Organ2/ASLSP》,曲子总长是639年!2004年7月5日,这个曲子又奏出了两个音符。

演出3年来总共演奏了5个音符,而且还要再演636年世界上最悲伤的歌世界上最悲伤的歌是《忧郁的星期天》(英语:Gloomy Sunday,匈牙利语:Szomorú Vasárnap),也译作《黑色的星期天》是匈牙利自学成才的作曲家赖热·谢赖什(RezsőSeress,1899-1968年)谱写于1933年的一支歌曲。

最长的一帧

最长的一帧
第一日
好了,在开始第一天的行程之前,请先打开您最惯用的编程工具吧:VisualStudio? CodeBlocks?UltraEdit?SourceInsight?Emacs?Vim?或者只是附件里那个制作低劣的记事 本 … … 总 之 请 打 开 它 们 , 打 开 OpenSceneGraph-2.6.0 的 源 代 码 文 件 夹 , 打 开
new osgViewer::GraphicsWindowWin32::WindowData(hWnd); traits->x = 0; traits->y = 0; …… traits->inheritedWindowData = windata; osg::GraphicsContext* gc = osg::GraphicsContext::createGraphicsContext(traits.get()); Camera* camera = viewer.getCamera(); camera->setGraphicsContext(gc); …… viewer.setCamera(camera); 这个过程虽然比较繁杂,但是顺序还是十分清楚的:首先设置嵌入窗口的特性(Traits), 例如 X、Y 位置,宽度和高度,以及父窗口的句柄(inheritedWindowData);然后根据特性 的设置创建一个新的图形设备上下文(GraphicsContext),将其赋予场景所用的摄像机。而 我们在 getContexts 函数中所要获取的,也许就包括这样一个用户建立的 GraphicsContext 设 备。
_cameraManipulator->init(*initEvent, *this); 从变量的名称可以猜测出_eventQueue 的功能,它用于储存该视景器的事件队列。OSG 中代表事件的类是 osgGA::GUIEventAdapter,它可以用于表达各种类型的鼠标、键盘、触压 笔和窗口事件。在用户程序中,我们往往通过继承 osgGA::GUIEventHandler 类,并重写 handle 函数的方法,获取实时的鼠标/键盘输入,并进而实现相应的用户代码(参见 osgkeyboardmouse)。 _eventQueue 除了保存一个 GUIEventAdapter 的链表之外,还提供了一系列对链表及其 元素的操作函数,这其中,createEvent 函数的作用是分配和返回一个新的 GUIEventAdapter 事件的指针。 随后,这个新事件的类型被指定为 FRAME 事件,即每帧都会触发的一个事件。 那么,_cameraManipulator 呢?没错,它就是视景器中所用的场景漫游器的实例。通常 我 们 都 会 使 用 setCameraManipulator 来 设 置 这 个 变 量 的 内 容 , 例 如 轨 迹 球 漫 游 器 (TrackballManipulator)可以使用鼠标拖动来观察场景,而驾驶漫游器(DriveManipulator) 则使用类似于汽车驾驶的效果来实现场景的漫游。 上面的代码将新创建的 FRAME 事件和 Viewer 对象本身传递给_cameraManipulator 的 init 函数,不同的漫游器(如 TrackballManipulator、DriveManipulator)会重写各自的 init 函 数,实现自己所需的初始化工作。如果读者希望自己编写一个场景的漫游器,那么覆写并使 用 osgGA::MatrixManipulator::init 就可以灵活地初始化自定义漫游器的功能了,它的调用时 机就在这里。 那么,回到 viewerInit 函数……很好,这次似乎没有更多的内容了。没想到一个短短的 函数竟然包含了那么多的信息,看来草率地阅读还真是使不得。

第二十届“新作文杯”放胆作文征集活动小学中高年级组获奖名单

第二十届“新作文杯”放胆作文征集活动小学中高年级组获奖名单

第二十届“新作文杯”放胆作文征集活动小学中高年级组获奖名单作者:来源:《新作文·小学中高年级版》2021年第08期天津市王淑雅《昆虫的世界》林卓翼《狼王》李婉晴《托梦》河北省刘丰源《我拥有超能力》张润梓《抓住机会,取得成功》吕嘉乐《掉饭菜也会遗传吗》纪清怡《考不好,我不怕》刘淼淼《千古知音最难觅》山东省张蕴涵《张氏起居注》刘朵啦《古老的“新月”》上海市陳可馨《一匹特立独行的狼》余沁瑄《我的乐园》河南省田光耀《变身记》陈言《我“飘”了》刘珂鑫《少女心老爸》江西省郭衍天《最美在诗意》吉林省刘芳含《小巷的糖味》山西省马润城《黄河岸边掉落的小燕子》李沛融《奶猫成长记》王浩宇《秀丽峨眉山》王怡芳《森林运动会》武占轩《东周那点事儿》王海荣《梦中奇遇》李锦鹏《我的“民警”梦》苗跃醴《阿呆的心愿》尹宇祺《醋泡鸡蛋》段昱帆《老鼠开会》次玄雨《开心的比赛》刘汉卿《我的心爱之物》王柯《全军出“鸡”》曹中健《我的笔袋——“大肚皮”》孟瓒《请叫我“马云”》李超儒《我家的蟹爪兰》杜俞晓《父亲的爱》王京磊《都是“比赛”惹的祸》南智焱《虚惊一场》赵泽《“龟兔赛跑”的悲剧》杨梓隽《爱挑食的弟弟》杨智誉《捉蚊趣事》王陆扬《我和孙悟空交朋友》卞瑞茜《奇妙无穷的新世界》常芳源《滚滚长江东逝水》陈周浩宇《飞翔吧!羽毛球》段炎辛《小奶猫之“大闹天宫”》梁楚涵《盲盒买买买》张昕玥《我家老五》张雪凌《动物从哪里来》张贻萱《永恒的气概》韩佳岑《快乐的课间十分钟》张淼淼《我的乐园》任雪辰《有你同行》王涵钰《妈妈的一丝微笑》张田筠畅《和书声一起长大》金子皓《爆竹声中辞旧岁》武敬越《斯人如遇》阎宇航《爱的自白》赵磊《“辣”还是“不辣”》白渊中《我家睡觉摆pose》刘雨泽《心的音符》王邦权《夜晚大树上的故事》江苏省桂子晟《人类的地球》王威《一棵糖果树》张烨炜《对峙水瓶》刘博明《大吃特吃》邵语宸《火星探秘》付子萱《月下》王博雅《假如我成为了风》王佳琪《蜘蛛》朱思翰《太空日记》王苏凡《回到三国》姚一诺《盼》顾苓蓝《我的大怪兽朋友》孙晨《夜游太湖》吴耘宽《抢凳子比赛》王孜宸《流淌在水里的童年》孙博溢《通往外婆家的路》邢元正《我和孙悟空过一天》明森《微风花飘香》杨妙心《塑料姐妹花》黄煜婷《大鱼》殷嘉奕《狼酋》黄千栩《那温暖的姿态》胡方意《提起那件事,我就害怕》季芮可《老街的回忆》包易蘅《野兔必安》王雨泽《秋之记忆》万轩圳《遇见古诗》余希杰《干饭大战》付明杰《灭尘大战》郑涵予《致祥林嫂——读〈祝福〉有感》陈奕橙《沙漠》巫姗《你是一抹巅峰之翠》范雅煊《假如我是一粒灰尘》张子涵《第一次走夜路》戈天弋《选择》褚雨鑫《冬天去看海》韩易菠《写给语文的情书》洪杨轩《鸿门宴》顾耘瑞《红色彼岸花》董清扬《橡皮》张睿朗《古时英雄》徐永程《曼巴回忆录——科比逝世一周年》浙江省陆祖煜《我和刘邦的一天》傅铭煊《亚运环游记》郑易恒《那一幕》陈俊毅《日落即景》陈键桥《鱼缸大战》刘思妍《走“亲戚”》梁宸睿《辣!辣!辣!》池郑阳《思考人生的枕头》周子皓《较——量》李晟律《问世间怒为何物》章彤彤《过而能改,善莫大焉》沈洲闻《暑假至味是清欢》王沄朵《刘姥姥进“大龙湾”》林晓熙《幸福都是奋斗出来的》张诗茹《雪糕日记》胡梦晨《黑夜的放飞》金熙超《第四罐雪花酥的诱惑》匡鸿羽《我心中的红船精神》鲍威尔《痛》梁玎宁《外婆的“豆腐菜单”》刘方舟《秘密宫殿来电》刘卓乐《今天,我当店员》沈弋皓《二十年后回家乡》盛洛洛《银河的歌》王嘉逸《温州,诗意的黄昏》王文祺《和乐元宵》吴睿珉《“三”游大明山》吴欣贻《疯狂的追星人》余喆一《“三国”鼎立》林俊豪《皮影戏》张淇存《雪豹“独眼”》吴天畅《被温暖照亮》吴诗琪《女孩的槐花树》徐子涵《当我醒来时……》林徐晃《元素魔法》王君元《一个悲伤的故事》钟煦谦《塘栖古镇》汪子豪《至味在人间之故乡的粉蒸排骨》薛惠文《佛魔戒》吴紫妍《月季》刘秦豪《光》周纯尔《窗外的香樟树》王瑾玥《弟弟的烦恼》陈茂可《旅行记》张诗晨《我家的大忙人》阮玺安《春天里的梦》四川省李雅楠《烦恼的星期天》刘羽《雨》穆梁友《鲸落》向宇豪《铁路》唐子篷《陈先生的闹钟》湖北省陈铠涛《多余的墨囊》王柏寓《通往未来的船》赵紫琪《迟迟》郭慧玲《偷偷钻出的小豆子》劳小迪《改变》黄子桐《一棵自大的树》黎若依《苹果历险记》许可欣《铿锵三人行》高一诺《邮票》湖南省王君达《向左向右》刘兴成《历史之路》王婧怡《你,屋檐上那一抹绿》李文杰《吾乃李文杰》广西省银煜筱《“蟑螂”和“螳螂”》陕西省马诗岚《谎话商店》甘肃省肖自祺《平山湖大峡谷一日游》张嘉钰《会飞的木屋》福建省林一然《牛牛喜相聚》刘铠鸣《放炮》王伟铭《海之趣》庄泽煊《坑人的听写大赛》吴峻熙《妈妈的另类兼职》郑暄然《今日头条》崔世博《当暴力来敲门》王俊涛《我家的噪音交响曲》倪翰霖《芭蕉雨》林煜涵《不开玩笑记》林家琦《鱼的交响乐》林灵颖《我们班的“不速之客”》林廷润《睡神三绝》林宜煊《换来一个春天》谢昊衡《好先生》陈育铠《珍藏》广东省冯怡然《不起眼的杜鹃花》徐墨宸《念》叶舒懿《答卷》洪瑜曼《红楼一梦》柯可儿《且待日出》钟泽晖《粤北的乡村年味》钟妮可《听,花开了》胡清之《沙场大战》蔡秉宸《一把雨伞》陈奕安《如何看待我的小升初》黄世谕《漫画同学之睿煜其人》黄世璋《我们班的“太乙真人”》戚诗灵《故乡最美是哪里》张景铭《不能呼吸的滋味,真难受》朱君琳《除夕不眠之夜》旷舒怡《我家的小院子》谭于成《那一刻,我长大了》钟柏辰《给刘老师的一封信》王梓涵《貂蝉与“刁馋”》李伟静《荷包蛋大战》李泳妍《作文,想说爱你不容易》朱恺《我们班的臭美垚》李艺哲《妈妈,我想对您说》张皓轩《我登上了开普勒22b星球》张子涵《选择困难症》王彬《湖南人眼中的辣椒》彭怡燃《故乡的味道》黄凡懿《沙湾古镇》刘熙瑶《假如食物会说话》廖芊君《别致的秋》徐鸿轩《藏在右臂的爱》王思睿《活出自己》劉青楚《我是一个稻草人》彭铠泓《树皮精灵》优秀指导奖丁冬英陈松萍徐绍英魏婷李卓陈洁张亮何红唐玉平赵春松邓晓凡庄秋玲王敏金晓琴王佩青杨健赵卷卷郭月徐鑫鲁奕然唐彩云田永凤蔡海萍童骏飞王红梅徐亦晗张婧张敏张晗张艳林肖小枚谢梦娜欧泳楷赵妙英张志锋梁应雄陈梦乔廖燕玲刘楚炎沈春雪林巧铃赖文莲钟金卿吴印涛孙鹏张明辉冯冰黄静文刘燕平刘晓莉张志平李苑桃李婉玲范冬霞刘克飞沈锡红陈杰杜玮顾正宇左焰杨志强赵幼华叶美凤姜楚楚李娜苏明丽林燕梁英钱春玲陈文怡夏红梅贾祝君黄红波蒋晨婷钱春玲史琳娟汪婷梅玲沈晓燕童天博王芳邹晓来黄重阳黄晓琳陈迪丽张娜娜张颖蔡伶俐樊小波李文琴潘兆艳刘兴华武小艳吴秀珍朱光余宗宝黄忠欧秀英周兰张宸罗尧虹优秀组织奖浙江省绍兴市新昌作文实验学校浙江省杭州市耕读缘培训学校浙江省诸暨市海亮教育集团海亮小学浙江省乐清市黄忠文学工作室江苏省苏州市星洋学校江苏省涟水小荷作文江苏省无锡市梅村实验小学江苏省苏州市实验小学教育集团吴江明珠学校江苏省泰州市巨程学校山西省朔州市亮子老师阅读与写作工作室山西省方山县城内小学山西省太原市书声琅琅时光岛湖北省武汉市中华小作家班湖南省麦田格教育集团广东省深圳市博雅斋作文馆广东省佛山市顺德区大良实验小学福建省泉州市小种子学趣馆河北省邢台市信都区今日学培训学校有限公司吴老师作文工作室四川省彭州市实验小学。

在信息时代保持清醒作文人物素材事例

在信息时代保持清醒作文人物素材事例

在信息时代保持清醒作文人物素材事例全文共5篇示例,供读者参考在信息时代保持清醒作文人物素材事例1多年前,比利时有个小木匠,儿时他误吞过缝衣针,误食过硫酸,不幸被砖块砸破过头,还曾摔倒在点燃的炉火上……经历过一次次生死劫,能活下来已是奇迹,但这些都没阻止他对音乐的执迷。

在做木工活的间隙,他总喜欢捣弄各式各样的长笛和单簧管。

21岁,他用铜做成抛物线状的圆锥管体,再安装上按键和哨头,自制成一件独特的乐器,吹奏出了曼妙的乐声。

他希望把它推广给世人,于是只身来到巴黎,挨家挨户地向乐器商吹奏。

可是没人瞧得起它。

九年过去,他费尽苦心推介,始终无人问津。

一次偶然的机会,音乐家柏辽兹被这只铜管独特的声音吸引,特意谱写了曲子,推荐他去音乐会演出。

梦寐以求的机会突然降临,他欣喜地坐上马车赶往音乐会现场,哪料到不幸又一次不期而至,那管乐器被颠簸着摔下车,摔成了两半儿。

望着断裂开的铜管,他沮丧到极点。

眼前不觉地映现出曾遭遇过的磨难和奚落,他懊恼地拾起两半管子,暗自责问道:难道就这样轻易地放弃来之不易的机会吗?他不甘心就此失望,于是决定试试破碎的铜管能否发出声音。

他试着将断裂的圆管合在一起,然后用力地吹气。

谢天谢地,虽然需要耗费更大的心力,但总算还能发出声音,奏出婉转的音乐。

他镇定地抱紧破损的乐器,来不及粘合就仓促地登上舞台,一手托住圆管,另一手摁住摔断的半截,一刻也不敢放开。

悠扬的乐声响起,他再没有办法翻乐谱,只能凭记忆演奏,有几次忘了谱子,就干脆持续吹长音,直到想起乐符再继续……尽管演奏的是破碎圆管,尽管他发挥得不够完美,但显然观众已被那柔和优美的声音所征服,沉浸其中。

演出结束后,响起如鸣般的掌声,他激动地弯腰致谢,半截圆管滑落到地面,这时人们才看清,原来那是一管破损的乐器。

即使身处绝境,也不轻言放弃,哪怕是仅握着一只摔碎的铜管。

人们为他坚韧的性格所感动,更被铜管天籁般的乐声所折服,这种音色美妙的乐器很快流传开来,成为乐坛的新宠,而他也被巴黎音乐学院聘请为教授。

基于OSG的作业仿真设计

基于OSG的作业仿真设计

基于OSG的作业仿真设计【摘要】随着我国各项经济的发展,人们对主要用于工程建设的——挖掘机的自动化程度、安全性要求越来越高,传统的工作模式已经无法适应。

如用于垃圾清理场地、酿酒厂的挖掘机,由于其工作环境的特殊性,仅仅依靠摄像头作为操作人员的操作依据已经远远不够了,此时就需要一种不需要摄像头,又可以为操作人员提供操作依据的仿真技术。

本文以VS2008为开发平台,结合OpenSceneGraph(以下简称OSG)技术实现挖掘机的作业过程仿真功能。

本文以液式挖掘机为研究对象,构造了详细的挖掘机三维模型,采用一定的方法完成场景组织工作,接下来利用更新、回调技术完成挖掘机作业的仿真。

【关键词】OSG;作业仿真;更新回调1.挖掘机作业仿真系统体系框架挖掘机作业仿真系统的构建可以分以下几步完成:(1)对挖掘机作业环境进行建模,其中主要包括挖掘机、物料及其周围环境等对象的建模。

在建模过程中要根据对象类型的特性,选择不同的方法进行分别建模,然后再利用编写的加载模型的函数将其导入到虚拟场景中,最后再根据系统预设的每个模型的位置完成真个虚拟场景组织构建。

(2)获取挖掘机作业情况的运行参数,根据这些实际运动参数,实时绘制场景图形,实现对挖掘机作业过程的仿真。

现场挖掘机作业情况的运行参数,如回转支撑、铲斗以及履带等的位置、运行速度、方向等,可以通过软硬件系统的交互接口获取。

(3)通过以上两步就可以实现对挖掘机作业过程的仿真,若要进一步提高虚拟场景的渲染速度,就需要对场景内的不同模型进行合理的组织和管理。

另外为了增强虚拟场景的逼真程度,还需要采用碰撞检测等技术来达到此效果。

根据以上分析,绘制了作业仿真设计的体系框架,如图1所示。

图1 系统框架架构图2.挖掘机作业环境建模挖掘机作业环境建模就是利用相关技术生产和真实环境形状相似的虚拟场景,这个是实现作业过程的仿真的非常重要任务。

虚拟环境一般由三部分构成[3]:内容、几何特性以及动态特性。

什么是OSG

什么是OSG
Graph的缩写,它是一款最新兴起的高性能的开源三维图形引擎,基于修改的LGPL协议(OSGPL)免费发布,广泛应用于开发虚拟仿真、虚拟现实、科学和工程可视化等应用领域。它以OpenGL为底层平台,使用C++编写,并可运行于Windows,Unix/Linux,Mac OS X,IRIX,Solaris,HP-UX,AIX和FreeBSD等操作系统,以及iPhone和Android移动设备操作系统。它从1998年发展至今,其功能特性涵盖了大规模场景的分页支持,多线程、多显示的渲染,粒子系统与阴影,各种文件格式的支持,以及对于Java、Perl、Python等语言的封装等等,其特点是可以用于快速开发高品质,高性能,高质量的代码,具备强大的可扩展性和可移植性,并且其协议不存在侵犯软件专利的可能性。
自成立以来,OSG中文论坛的发展迅速,从最初的数十人发展到如今超过8000名注册用户的规模,在国内开发者中间积累了相当的知名度,并逐步受到国外OSG核心开发者的重视和好评。相信作为OSG在亚洲推广的一个重要组成部分,osgChina的发展也会逐渐稳步前进,为更多开发者们提供免费的服务和信息交流的渠道,并进一步为这个成熟的三维渲染引擎的发展做出应用的贡献。
2008年初,中国唯一的OpenSceneGraph官方网站镜像和开发者社区:osgChina正式宣布成立,它的目的是为全中国的OSG爱好者和开发者们提供一个舒适、准确、高效的技术交流平台,使初学者不致迷失于庞大的OSG系统架构中,使有志于OSG开发和虚拟显示行业的朋友能够及时地发表自己的看法和作品,或者寻求合作、招聘和求职。
OpenSceneGraph的网站地址为:/
osgChina中文社区论坛的地址如下:/
(撰稿:申闫春 王锐)

中国励志书籍推荐

中国励志书籍推荐

中国励志书籍推荐中国励志书籍1::《世界上最伟大的励志书》(珍藏本)作者:李津出版社:中央编译出版社出版日期: 2005-06-01内容简介:《世界上最伟大的励志书》是一部鼓舞人心、激励志向的巨巨着。

饮食数十位励志大师的成功思想及其经典着作中的枋心内容,适合所有沿着知识、品格和职责的道路努力提升自我品质的人们。

从积极的心态到一生的次本,从讲话的艺术到人性的弱点,成功学大师将告诉你怎样面对人生、把握人生才能拥有美好的未来。

也会帮你全面了解自己的性格对于人生的规划和发展将起到哪些作用。

看到自己性格中的优点,并充分利用这些长人炎处,发挥清能,获得成功!在大师们的指导下,还会让你养成良好的习惯,积极思考、持之以恒。

中国励志书籍2:.《平凡的世界》中国作家路遥的毕生呕心沥血之作。

小说以陕北黄土高原双水村孙、田、金三家的命运为中心,反映了从“文革”后期到改革初期广阔的社会面貌。

路遥先生后来因为癌症逝世,这部小说却激励许许多多中国的青年。

中国励志书籍3::《毛泽东传》你了解毛泽东吗?你知道的是一个真实的毛泽东,还是一个被符号化的毛泽东?毛泽东,永远是一个毁誉参半的人物,但不可否认的是,毛泽东在1949年以前,以卓越的思想和至高的境界,完成了世界上最不可能的事情——推翻了中国几千年的旧世界,让天地变色,让日月换颜。

从 16岁离开封闭的韶山冲,到1949年站在天安门前,你知道毛泽东经历了多少曲折?搜狐CEO张朝阳说:从做事的角度而言,毛泽东排名中国千古第一。

中国励志书籍4:从你的全世界路过:让所有人心动的故事作者:张嘉佳编辑推荐:20XX年亚马逊年度图书第一名。

《从你的全世界路过》是微博上最会写故事的人张嘉佳的一部短篇小说集,超4亿读者争相阅读的故事。

书中讲述了发生在我们身边的很多爱情故事,有念念不忘的美好,有爱而不得的疼痛,有生离死别的遗憾,有一再错过的宿命,也有喧嚣之后的回归和温暖。

总有那么一些瞬间,你会在张嘉佳的故事里看到自己,也总有那么一些瞬间,你会因为这些故事,而想到某个人,某段爱情。

《穿过月亮的旅行》电影影评

《穿过月亮的旅行》电影影评

《穿过月亮的旅行》电影影评在看到预告之时,我便对这部电影充满了极为热切的期待。

怀着这份期待,我先是阅读了原著小说。

小说的笔触极为梦幻,深刻地反映出了那个特定时代的爱情观念,这也使得我对电影的期待值被进一步拉高。

于是,我在一大早就前往影院,以表达对这部作品的支持。

然而,不得不指出的是,这部电影的海报字体与《我和我的 XX》系列如出一辙,每次看到时总会令人有些出戏。

从影片呈现来看,导演似乎有意将其塑造成复古风格,剪辑方面也总是在卡点,仿佛剪辑师急于炫技一般,但这并非是哔哩哔哩剪辑大赛,整体节奏并不恰当,大部分配乐也并不合适,完全没有我在阅读小说时所想象的那种画面慢而柔和的感觉。

唯有最后王锐吹奏的《小丑》相对符合当时的场景,那两个可怜的小丑形象跃然眼前。

但王锐仅是一个高中毕业生,他能吹出这样的古典乐,似乎有些不符合人物设定。

影片中有一处情节给我留下的感触尤为深刻,那便是王锐购买站台票后被请下火车,饿着肚子狼吞虎咽地吃完方便面,委屈地流着眼泪,真可谓是“贫贱夫妻百事哀”。

而最后他们哭得那般厉害,着实让人有些不解,毕竟又不是生离死别,仅仅只是一场失败的团聚,这样的安排似乎有些刻意。

电影把这两个人塑造得过于憨态可掬了。

阅读小说时,感觉这个故事仿若《麦琪的礼物》,主要侧重点在于夫妻之间双向奔赴的爱情,但主创团队在这方面显然用心不足,反倒让观众更多地注意到了绿皮火车上的世间百态。

在选角方面,感觉是较为合适的,张子枫和胡先煦在一定程度上符合人物设定,但男女主之间却没什么 CP 感,或许这便是熟人之间的尴尬吧。

两人的演技都不够出色,相对而言张子枫的表演稍显突出一些,但依然会让观众感到出戏,致使他们之间的感情难以让观众信服。

或许是我最初的期待值过高了,在看完小说和预告后便一直在思考导演会如何去拍摄这部小说。

然而实际观看时却发现,这位导演几乎是完全照搬小说来进行拍摄,毫无惊喜可言,也没有体现出应有的影像价值,甚至还不如小说留给读者的想象空间广阔。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对 OSG 有所了解之后,我们也许可以很快地回答这个问题,正如下面的代码所示: while (!viewer.done())
viewer.frame(); 就这样,用一个循环结构来反复地执行 frame()函数,直到 done()函数的返回值为 true 为止。每一次执行 frame()函数就相当于完成了 OSG 场景渲染的一帧,配置较好的计算机可 以达到每秒钟一二百帧的速率,而通常仿真程序顺利运行的最低帧速在 15~25 帧/秒即可。 很好,看来笔者的机器运行 frame()函数通常只需要 8~10ms 左右,比一眨眼的工夫都要 短。那么本文就到此结束吗? 答案当然是否定的,恰恰相反,这篇繁琐且可能错误百出的文字,其目的正是要深入 frame()函数,再深入函数中调用的函数……一直挖掘下去,直到我们期待的瑰宝出现;当然 也可能是一无所获,只是乐在其中。 这样的探索要到什么时候结束呢?从这短短的 10 毫秒中引申出来的,无比冗长的一帧, 又是多么丰富抑或无聊的内容呢?现在笔者也不知道,也许直到最后也不会明了,不过相信 深入源代码的过程就是一种享受,希望读者您也可以同我一起享受这份辛苦与快乐。 源代码版本:OpenSceneGraph 2.6.0;操作系统环境假设为 Win32 平台。为了保证教程 的篇幅不致被过多程序代码所占据,文中会适当地改写和缩编所列出的代码,仅保证其执行 效果不变,因此可能与实际源文件的内容有所区别。 由于作者水平和精力所限,本文暂时仅对单视景器(即使用 osgViewer::Viewer 类)的 情形作出介绍。 转载请注明作者和 本文在写作过程中将会用到一些专有名词,它们可能与读者阅读的其它文章中所述有所 差异,现列举如下: 场景图形-SceneGraph;场景子树-Subgraph;节点-Node;摄像机-Camera;渲染器-Renderer; 窗口-Window;视口-Viewport;场景-Scene;视图-View;视景器-Viewer;漫游器-Manipulator; 访问器-Visitor;回调-Callback;事件-Event;更新-Update;筛选-Cull;绘制-Draw。
osgViewer/ViewerBase.cpp 这个文件……同样的话就不再重复了。但是如果您没有这样做, 而仅仅是一边聊着 QQ,一边在电话里和女朋友发着牢骚,一边还要应付突然冲进来的老板, 一边打开这篇教程的话——对不起,我想您会在 1 分钟以内就对其感到厌烦,因为它就像天 书一样,或者就像一坨乱七八糟的毛线团,只有家里那只打着哈欠的小猫可能会过来捅上一 下。
好了,废话不再多说。我们这就开始。
当前位置:osgViewer/ViewerBase.cpp 第 571 行,osgViewer::ViewerBase::frame() frame 函数的内容本身几乎一眼就可以看完。不过要注意的是,这个函数是 ViewerBase 类的成员函数,而非 Viewer 类。因此,无论对于单视景器的 Viewer 类,还是多视景器的 CompositeViewer 类,frame 函数的内容都是相同的(因为它们都没有再重写这个函数的内容)。 该函数所执行的主要工作如下: 1、如果这是仿真系统启动后的第一帧,则执行 viewerInit();此时如果还没有执行 realize() 函数,则执行它。 2、执行 advance 函数。 3、执行 eventTraversal 函数,顾名思义,这个函数将负责处理系统产生的各种事件,诸 如鼠标的移动,点击,键盘的响应,窗口的关闭等等,以及摄像机与场景图形的事件回调 (EventCallback)。 4、执行 updateTraversal 函数,这个函数负责遍历所有的更新回调(UpdateCallback); 除此之外,它的另一个重要任务就是负责更新 DatabasePager 与 ImagePager 这两个重要的分 页数据处理组件。 5、执行 renderingTraversals 函数,这里将使用较为复杂的线程处理方法,完成场景的筛 选(cull)和绘制(draw)工作。 下面我们就按照 1~5 的顺序,开始我们的源代码解读之旅。
_cameraManipulator->init(*initEvent, *this); 从变量的名称可以猜测出_eventQueue 的功能,它用于储存该视景器的事件队列。OSG 中代表事件的类是 osgGA::GUIEventAdapter,它可以用于表达各种类型的鼠标、键盘、触压 笔和窗口事件。在用户程序中,我们往往通过继承 osgGA::GUIEventHandler 类,并重写 handle 函数的方法,获取实时的鼠标/键盘输入,并进而实现相应的用户代码(参见 osgkeyboardmouse)。 _eventQueue 除了保存一个 GUIEventAdapter 的链表之外,还提供了一系列对链表及其 元素的操作函数,这其中,createEvent 函数的作用是分配和返回一个新的 GUIEventAdapter 事件的指针。 随后,这个新事件的类型被指定为 FRAME 事件,即每帧都会触发的一个事件。 那么,_cameraManipulator 呢?没错,它就是视景器中所用的场景漫游器的实例。通常 我 们 都 会 使 用 setCameraManipulator 来 设 置 这 个 变 量 的 内 容 , 例 如 轨 迹 球 漫 游 器 (TrackballManipulator)可以使用鼠标拖动来观察场景,而驾驶漫游器(DriveManipulator) 则使用类似于汽车驾驶的效果来实现场景的漫游。 上面的代码将新创建的 FRAME 事件和 Viewer 对象本身传递给_cameraManipulator 的 init 函数,不同的漫游器(如 TrackballManipulator、DriveManipulator)会重写各自的 init 函 数,实现自己所需的初始化工作。如果读者希望自己编写一个场景的漫游器,那么覆写并使 用 osgGA::MatrixManipulator::init 就可以灵活地初始化自定义漫游器的功能了,它的调用时 机就在这里。 那么,回到 viewerInit 函数……很好,这次似乎没有更多的内容了。没想到一个短短的 函数竟然包含了那么多的信息,看来草率地阅读还真是使不得。
当前位置:osgViewer/View.cpp 第 227 行,osgViewer::View::init() Viewer::viewerInit 函数只做了一件事,就是调用 View::init()函数,而这个 init 函数的工 作似乎也是一目了然的:无非就是完成视景器的初始化工作而已。 不过在我们离开这个函数,继续我们的旅程之前,还是仔细探究一下,这个初始化工作 到底包含了什么? 阅读某个函数的源代码过程中,如果能够大致知道这个函数的主要工作,并了解其中用 到的变量的功能,那么即使只有很少的注释内容,应该也可以顺利地读完所有代码。如果对 一些命名晦涩的变量不甚理解,或者根本不知道这个函数于运行流程中有何用途,那么理解 源代码的过程就会麻烦很多。 View::init 函数中出现了两个重要的类成员变量:_eventQueue 和_cameraManipulator, 并且还将一个 osgGA::GUIEventAdapter 的实例传入后者的初始化函数。 代码如下:
new osgViewer::GraphicsWindowWin32::WindowData(hWnd); traits->x = 0; traits->y = 0; …… traits->inheritedWindowData = windata; osg::GraphicsContext* gc = osg::GraphicsContext::createGraphicsContext(traits.get()); Camera* camera = viewer.getCamera(); camera->setGraphicsContext(gc); …… viewer.setCamera(camera); 这个过程虽然比较繁杂,但是顺序还是十分清楚的:首先设置嵌入窗口的特性(Traits), 例如 X、Y 位置,宽度和高度,以及父窗口的句柄(inheritedWindowData);然后根据特性 的设置创建一个新的图形设备上下文(GraphicsContext),将其赋予场景所用的摄像机。而 我们在 getContexts 函数中所要获取的,也许就包括这样一个用户建立的 GraphicsContext 设 备。
第一日
好了,在开始第一天的行程之前,请先打开您最惯用的编程工具吧:VisualStudio? CodeBlocks?UltraEdit?SourceInsight?Emacs?Vim?或者只是附件里那个制作低劣的记事 本 … … 总 之 请 打 开 它 们 , 打 开 OpenSceneGraph-2.6.0 的 源 代 码 文 件 夹 , 打 开
解读成果: osgGA::EventQueue::createEvent,osgGA::MatrixManipulator::init,osgViewer::View::init, osgViewer::Viewer::viewerInit。 悬疑列表: 无。
第二日
当前位置:osgViewer/Viewer.cpp 第 385 行,osgViewer::Viewer::realize() Viewer::realize 函数是我们十分熟悉的另一个函数,从 OSG 问世以来,我们就习惯于在 进入仿真循环之前调用它(现在的 OSG 会自动调用这个函数,如果我们忘记的话),以完成 窗口和场景的“设置”工作。那么,什么叫做“设置”,这句简单的场景设置又包含了多少 内容呢?艰辛的旅程就此开始吧。 首先是一行:setCameraWithFocus(0),其内容无非是设置类变量_cameraWithFocus 指向 的内容为 NULL。至于这个“带有焦点的摄像机”是什么意思,我们似乎明白,似乎又不明 白,就先放入一个“悬疑列表”(Todo List)中好了。 下面遇到的函数就比较重要了,因为我们将会在很多地方遇到它: Contexts contexts; getContexts(contexts); 变量 contexts 是一个保存了 osg::GraphicsContext 指针的向量组,而 Viewer::getContexts
相关文档
最新文档