JCHub

  • Home
  • Category
    • A/V
    • WebRTC
    • Beauty of Programming
    • Linux
    • Windows
    • Moments of Life
    • Campus Life
  • Reference
    • API Reference
    • Utilities
    • AV Test
    • Doc
  • Message Board
  • About
JCHub
Code as My Sword, Lost in Obsession
Audio & Video Sharing

音乐分享--Why Not Me?

Enrique Iglesias的《Why Not Me》是我经常循环播放的歌曲,喜欢这首歌主要是因为其超美的旋律以及演唱者优美的嗓音,累了,躺下来静静的听一遍,享受这种旋律带来的宁静,享受拉丁风格音乐的别样魅力。

2014年5月3日 0comments 1286hotness 0likes Jeff Read all
Beauty of Programming

Ogre中阴影设置问题

按照导师前天的要求今天给虚拟漫游系统换了个人物,原来用的是Ogre官方自带的那个Sinbad模型,今天给换成了另一个模型,有点像非洲矿工 不过这过程中遇到了一个问题,就是人物没有阴影,我检查了下程序,设置阴影,灯光的代码都写了,why?只能求助于谷歌了, 谷歌了下ogremax model without shadow,找了几页就找到答案了,我在Ogremax的scene settings中忘记选择了阴影这一项,如下图所示 也就是建好模型后,需要创建一个灯光,然后导出时环境设置中记得选择一个阴影类型,这样在程序中就能看到阴影效果了。 参考链接 http://www.ogremax.com/Documents/OgreMaxSceneExporter-3DSMax/tutorial-configure-shadows.html

2014年5月1日 1comments 1525hotness 0likes Jeff Read all
Beauty of Programming

Ogre中的场景文件

在Ogre中,要构建一个较复杂场景,如果通过手工一个个设置坐标,将会十分麻烦,这时我们就可以利用场景文件直接导入场景。 简介 场景文件(.scene)其实就是一个标准的xml文件,包含了描述场景所需要的元素,场景文件内容示例: [crayon-69d0e0abe38bf941067958/] Advanced Ogre Framework中带有3个与场景文件解析有关的类:DotSceneLoader.hpp,DotSceneLoader.cpp以及rapidxml.hpp,可以参考下该框架,了解下场景文件使用,同时该框架对Ogre学习也很有帮助。 工具 导出场景文件有很多工具,比如我开发的漫游系统用的是3Dsmax的OgreMax插件,在3Dsmax中建模好后使用OgreMax插件导出为场景文件。 由于场景复杂时,3Dsmax的渲染速度很慢,所以我才用分区域建模,地面与地面物体分开建模,地面导出为一个场景文件,地面物体导出为另一个场景文件,然后在程序中导入这两个场景文件即可(要注意各个场景文件中模型名称不能重复,即不能拥有相同模型名称,否则程序进入时报错)。 参考: Ogre DotScene Advanced Ogre Framework

2014年4月25日 0comments 1816hotness 0likes Jeff Read all
Beauty of Programming

irrKlang简介

irrKlang是一个跨平台的音频库,能够使用C++,C#以及所有.NET语言开发。 特点 提供强大高水平的API用于3D或2D应用中播放声音,比如游戏,科学可视化以及多媒体应用。 irrKlang 非商业用途使用免费。 支持的文件格式 irrKlang目前支持播放以下文件格式: RIFF WAVE (*.wav) Ogg Vorbis (*.ogg) MPEG-1 Audio Layer 3 (*.mp3)[2] Free Lossless Audio Codec (*.flac) Amiga Modules (*.mod) Impulse Tracker (*.it) Scream Tracker 3 (*.s3d) Fast Tracker 2 (*.xm) 除此之外,通过使用插件能很容易播放其他格式。 支持的平台 Windows 98, ME, NT 4, 2000, XP, Vista, Windows 7, Windows 8 Linux / *nix Mac OS X (x86 as well as PPC[3]) 3D音效 在所有平台与音频驱动上,irrKlang内置支持3D音效功能,可用于3D游戏中,效率高,而且不占用太多CPU。 支持的编译器与语言 目前支持如下编译器: Microsoft Visual C/C++ 6.0 - 2012 GCC 3-4 All .NET languages (C#, VisualBasic.NET, Delphi.NET, IronPhyton, F#, Haskell.NET etc.) 音效 除了支持3D声音中的多普勒效应,目前也支持如下音效,包括在2D与3D声音中: 齐声 压缩 失真 回音 参量均衡 混响 简单的API 拥有极其简单的API,如下代码展示如何用C++播放MP3文件 [crayon-69d0e0abe4c5b416102195/] 总之这是一个很容易使用的音频库,前面我用Ogre开发漫游系统时也用到了该音频库。Ogre中加入声音

2014年4月25日 0comments 2507hotness 0likes Jeff Read all
Audio & Video Sharing

音乐分享—Good Time

今天毕业设计中期检查完,检查老师说做的不错,毕业设计也就进入写论文阶段,心情不错,故分享一首Good Time,希望自己每天都是Good Time。

2014年4月23日 0comments 1085hotness 0likes Jeff Read all
Beauty of Programming

Ogre中加入声音

没有声音会觉得很乏味,不够生动形象,更何况是一个3D漫游系统呢。所以今天给自己的系统加入了声音效果。由于Ogre只是个图像渲染引擎,加入声音的话得加入第三方库,对比了一些音频库,最后决定使用irrKlang这个音频库,跨平台,支持3D音效,使用起来也不是太难。 安装配置 首先到

2014年4月17日 1comments 1928hotness 0likes Jeff Read all
Audio & Video Sharing

时光匆匆,已成过往

时光经不住流淌,硬生生地扯痛了我的回忆。我将开口,同时感到空虚。    春色渐暖,阳光下有我们逝去的青春,我曾怀着无限的柔情思念过往。为了能够回忆过往,于是我努力地忍住了悲伤。    还记得曾经阳光下的微笑,那是一种能够拨动世界心弦的微笑,夕阳也经不起娇羞,悄悄地隐退在青山背后;还记得,那是一种过分完满的幸福,可是天空中却透露着一种神秘的苦恼,足以让人微醉微醒;还记得……    很多事情,我们没有认真去做,只是为了不为难自己,但等我们真正想要做好的时候,却发现一切已经来不及了;很多人,我们没有努力地去争取、去珍惜,等我们回过神来的时候,才发现一切早已物是人非连同自己的力不从心。这个城市太会说谎,我们只是受了点伤故意隐藏,好逃避别人无休止的责问和突然的安慰。很多伤,我们可以铭记在心,我们也可以随着时光匆匆,假装遗忘。    还记得空荡的街景,我们只需要更有勇气一点,坚强一点,再坚强一点,就能够坚持一个人默默走完。    凌乱的思绪,嵌套在凌乱的文字里,过去的幸与不幸,只需要一个人在孤单的角落里独自黯然神伤,不需要说给他人听,也不需要去烦恼他人。    有些经历,和年龄没有关系;有些故事,并不要求一定要有结局;有些人,我们可以选择沉默,假装漠不关心。    天空的雾来的漫不经心,我的心情像画一样安静。既不知道自己为什么会莫名的感伤,也不知道为什么自己会在一个人的世界里如此宁静。    ……时光匆匆,已成过往,你可以微笑掩饰悲伤,也可以微醉微醒倒在一个人的回忆里!

2014年4月11日 0comments 2893hotness 0likes Jeff Read all
Beauty of Programming

Ogre中的粒子系统(Particle System)

在3D应用中,大多数特效都要依靠粒子系统实现。虽然我们不一定需要粒子系统实现特殊视觉效果,但是需要特殊效果时,粒子系统能让我们的需求更容易实现。 粒子系统基础 粒子系统基于脚本实现,不支持硬编码,这是为了更快地实现原型与复用。如果需要的话,我们完全能通过编写代码创造与配置出粒子系统。粒子系统通常作为模板在particle脚本中定义,能够用在应用中,从而创建出粒子系统的多种实例。 粒子系统与3D场景 因为粒子系统能够附于场景节点上,所以也能像节点一样进行变换。缩放,旋转能够影响粒子系统的发射方向。更进一步说,粒子一旦发射,就将发射到世界空间中。这意味着,场景节点移动将带动发射器移动,但是发射的粒子仍然在后面。如果需要粒子与场景节点一起移动调整,可以设置粒子系统发射粒子到本地空间中,这会携带着发射的粒子与场景节点一起移动。 粒子系统发射粒子数量有限制。一旦发射的粒子达到数量限制,粒子系统将不能发射更多,直到发射的粒子消失。默认发射粒子限额是10,不过我们可以设置更多。 粒子系统边界 粒子系统动态特性表示他们的边界盒能够按规律重新计算。在每一帧中这样做虽然消耗很多,但是Ogre默认这样做,并且Ogre每10秒会停止更新边界一次。我们能够重写该行为,用ParticleSystem::setBoundsAutoUpdated()方法让Ogre在多少秒后更新边界,该方法传入stopIn参数,告诉Ogre在给定的事件后更新边界,如果写了一个粒子系统,必须知道不能让粒子系统边界超过一定大小,使用ParticleSystem::setBounds()方法设置边界盒大小,显而易见的说,这是设置边界最有效方法。如果我们事前知道粒子系统创建的界限,也只能这样做。这里给出一种妥协方案,ParticleSystem::setBounds()与ParticleSystem::setBoundsAutoUpdated一起工作,这样可以设置出事界限大小,并且在粒子系统创建后慢慢更新。 粒子系统的更新 当一个例子系统不在可视区域内时,还会持续更新,有可能等下重新进入视觉区域。这一点很重要,如果粒子系统一离开可视区域就停止了,几秒后重新回到可视区域时保持与离开时相同的状态,这会让视觉效果不和谐。 然而考虑到性能原因,当粒子系统离开视觉区域一段预设的时间周期后,会停止更新。考虑到暂时停止的粒子系统突然进入可视区域时,会造成前面提到的问题,为了解决该问题,Ogre提供了“fast-forward” 机制,允许粒子系统在解冻后(恢复更新)提前到达“目前”状态。该特性通过ParticleSystem::fastForward()方法提前创建粒子系统时间轴使用。 粒子系统排序 我们能够按照粒子与相机的距离排序粒子。该特性默认禁用。显而易见,按照与相机的距离排序每个粒子会对性能造成影响,特别是较大的粒子系统,但有时候没有其他方法实现该特殊效果。 比如下面一张图 该粒子效果禁用排序后效果如下: 下面一张图是使用了排序的粒子系统效果: 从两图的对比可以看出,没有排序的那张图中,粒子系统底部的火焰清晰而且不自然的透过烟雾,做了排序的那张图中,烟雾隐藏了火焰,这时候性能上做些损耗是值得的。 发射器 粒子系统发射器就是发射粒子的东西。Ogre提供的发射器默认以直观空间的形式发射粒子:点发射器从单点发射粒子到空间中,盒发射器从定义好的长方体任意方向发射粒子,圆筒发射器从照定义好的圆柱体以任意方向发射粒子,椭球发射器按椭球体发射粒子,然而空心椭球体发射器从椭球体的壳发射粒子,圆环发射器从平面环的边缘发射粒子。 粒子系统发射粒子的比例,速率与方向完全可配置。粒子系统附于场景节点上,因此发射器也拥有相对父节点的位置。 粒子并不按直线发射,通常发射到环绕发射器方向的圆锥体中,通过角度参数可以定义发射器。如果我们想按直线发射粒子,该参数设置为0即可。如果想以任意方向发射,该参数设置为180,设置为90时以环绕方向向量发射到半球中。 发射粒子的速率按每秒多少粒子定义。粒子能够以设定的速率发射,或者在规定范围内以随机速率发射。同样,发射的粒子有自己的生命周期(time-to-live,TTL,以秒为单位),或者让发射器为每个粒子从生命周期范围随机随机选取。粒子发射持续时间既可以设定,也可以在某个范围内随机选取。发射期间,粒子颜色可以设置为常量或者变化的值。 我们可以在运行库中加入定制的发射器,这可能是扩展Ogre粒子系统最简单的方法。 影响器 一旦粒子发射到世界中,影响器影响着粒子运动路径与存在时间。例如,我们能够对粒子施加重力,施加风力等。 线性力 线性力对系统中的日子施加力的作用。既然力是矢量,那么就有方向与大小。大小是按矢量定义的力的大小,因此force_vector 0 50 0与force_vector 0 100 0有同样的方向,但大小是后者的一半。由于不做检查的力能够导致巨大的速度,所以能用force_application设置力如何应用。force_application average通过设置平均力的速率与粒子大量速率使粒子速率渐渐趋于稳定。force_application add允许速率一直增加(或减少)。 颜色衰减器 颜色衰减器修改存在粒子的颜色。颜色定义决定于每秒组成成分的改变。如下代码每半秒衰减一次色彩: [crayon-69d0e0abe640c496146832/] 特别注意下这不意味着无限衰减,例子中的0.5表示色彩组成成分每秒钟强度减少0.5,因此开始时是白色色彩的话,两秒后将会衰减为黑色。 缩放器 缩放器设置统一的比例因素应用到粒子大小,比例因素均衡的应用到粒子大小。 旋转器 旋转其既可以按随机或确定的速度旋转粒子材质,默认值为0,表示没有旋转。 色彩图 通过色彩图像我们能够改变色彩,而不是按照定义的衰减因素。图像可以是.png, .gif, .jpg等格式。唯一的的参数是图像文件名称。 粒子系统使用 Ogre SDK中media/particle/smoke.particle包含了一个烟火效果的粒子脚本,如下所示: [crayon-69d0e0abe6416723370575/] 材质文件在media/materials/scripts下的smoke.material,材质脚本如下: [crayon-69d0e0abe6419718550675/] 通过如下方法即可以使用上面的脚本创建一个烟火效果的粒子系统: [crayon-69d0e0abe641d541266670/] 也可以通过下面的代码创建: [crayon-69d0e0abe6420226567908/] 手动编写粒子效果脚本比较麻烦,我们可以利用别人开发的编辑器编辑粒子, 编辑器下载地址:http://pan.baidu.com/s/1sjnotat

2014年4月11日 0comments 2739hotness 7likes Jeff Read all
1…1415161718…26
Copyright Statement

Unauthorized reproduction or plagiarism in any form is strictly prohibited. For reprint requests, please contact via email.

Recent Comments
snail Published at 1 weeks ago(03 03202633105 27 27pm26) 多谢,大佬。醍醐灌顶!
dongxuh Published at 8 months ago(07 07202573103 27 27pm25) 真心不错的博客,有机会能一起分享
南南 Published at 9 months ago(07 07202573103 15 15pm25) 写的超棒!
Jeff Published at 11 months ago(05 05202553105 15 15pm25) 2025-03-12的提交已经支持了
Jeff Published at 11 months ago(05 05202553105 15 15pm25) 源视频地址已经不可用了,引用优酷的视频地址,看了下被删了
Ad

COPYRIGHT © 2026 jianchihu.net. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang