注    册
密 码 忘记密码
保存密码         取消

个人资料

  该用户信息已经设置为保密!

详细资料..

我的聊天室

暂无聊天室

进入聊天室

日志

三维场景中草的绘制(置顶日志)

分类:计算机

发现xophiix已经写了篇关于草的文章了。

http://www.xophiix.com.cn/article.asp?id=170

所以,一下我来解释一下草的纹理为什么要这样的。

以下是,我们的场景和专业公司场景的对比。(前景的是我们做的,背景的是专业公司的)

 

经过一些比较,发现专业公司的草,边缘有非常明显的轮廓。一开始认为是边缘使用的透明

化的处理,但是我们使用这样的纹理却没有相同的效果。于是,我一开始的改进方案是在草

的纹理边缘添加一些暗色,但是也达不到专业公司的效果。后来发现,在这些轮廓很近的地

方看,轮廓后面的部分草没有画。于是认为该公司使用了一种奇特的技术。

一次在于别人的交流中发现,其实这是透明物体绘制顺序的问题。透明物体的正确绘制顺序

是先画远处,后画近处。否则,远处的草就会“消失”。从后来写草的排序算法时发现,专

业公司的草并不是精确的先画远处,后画近处。而是,相似距离的草,没有一定的绘制先后

次序。这样产生了草有“轮廓”的效果。而且,这样可以写出复杂度为O(n)的草的排序算法

,一举两得。

在一些方法都无效的情况下,认为草的纹理应该是主要问题。于是,开

始从绘草的纹理。

对比一下,原来草的纹理和专业公司的区别。
1)杂色。这样看起来草有些杂乱无章。
2)草很尖。看起来奇奇怪怪的,有种杂乱无章的感觉。

好吧,打开PS自己画草。下面来说一下画草要注意的事项
1)用较小的画笔。
2)注意草的根数,这决定草的茂密程度。即不能太稀露出破绽。也不能太密。
3)草根部的纹理,随便画。只要不太BT。都不影响效果。
4)草上部的纹理,要注意。相邻草的经脉延伸夹角要尽可能小,并且不要相交。否则会出现
杂乱无章的现象。

然后,可以给草设定一个颜色了。当然,可以用和专业公司相同的。但是这样似乎就是秋天

。最后,我选择了偏黄的浅绿色。于是有了上图的草。(后来为了突出昆虫,将草的饱和度降低,

并使草偏黄。)

然后是草阴影了。由于光源是不动的,做静态阴影就足够了。打开3DMax,设置平行光源,

对地形模型渲染。然后就得到有阴影的地形了。然后将渲染的图放到PS里,一番图象处理后

,获得地形阴影数据。再设计一个算法,在绘制草的时候直接使用这个地形阴影数据。

最后,我们的场景如下,

我对<对象模型-策略,模式,应用>的评价

分类:默认栏目

这是一本以实际例子来讲解如何设计系统的书。其中的面向对象设计,相对简单,完全不能和<设计模式>中的例子相比。但是,书中如何获得需求的部分,确实相当不错。

三妾争产的不足之处

分类:默认栏目

"三妾争产"相关资料

http://bbs.tecn.cn/archiver/?tid-177623.html

 

我对这种分法的公平性存疑。

比如:如果一个商人有两个妻子,每人要求300。而商人只有200。
那么,明显每人分得100。

但是,如果大老婆突然提出商人还有一个“小老婆”。她和“小老婆”每人
要求为100和200。结果就是大老婆和“小老婆”得到了125。
结果,大老婆利用了捏造的“小老婆”,多得了25。

原因就是,大老婆利用该方法照顾弱者的特性,将自己的“股权”分给不存在的弱者。谋取

了利益。

 

不想写长的文章--读<大决战-微软面经>有感

分类:默认栏目

自己不喜欢写长的文章。因为任何文章看过之后,到最后都记不得什么了。所以自己的文章通常都精炼过。但是为什么有很长的小说呢。因为我把文章中的主人公设想成自己。种种的机缘巧遇都发生在自己的身上。体验者快乐,痛苦等等这些情感。所以,长的详细描写的文章,才能让我有足够的时间和资源来编织我的梦。更能使我在读的时候有种身临其境的感觉。如果我的文章不是为了让人去遐想的,那么我也不需要写的很长。

MPC编译过程

分类:默认栏目

源代码版本 guliverkli_20030820
在vs.net 2003下编译通过

 

编译过程
1:安装
- DirectX 9 SDK
- Platform SDK
- Windows Media Format SDK 9
http://download.microsoft.com/download/3/0/4/30451651-9e47-4313-89a3-5bb1db003c26/WMFormatSDK.exe

2:环境设置
包含文件
<DXSDK>Include
<DXSDK>SamplesC++CommonInclude
<DXSDK>SamplesC++DirectShowBaseClasses
<WMSDK>WMFSDK9include
...
 
包含lib
<DXSDK>lib
<DXSDK>SamplesC++CommonSrc
<WMSDK>WMFSDK9lib

(把<DXSDK>SamplesC++DirectShowBaseClasses 生成的库拷到<DXSDK>lib中
  注意要改个名字如:strmbased.lib,strmbaser.lib)

3:编译
按如下的顺序
1). deccs
2). dsutil
3). ui/*
4). subpic
5). subtitles
6). filters (run libfilters.bat to merge them)
    注意最后要运行libfilters.bat

7). appsmplayerc
 

注意生成的lib版本要一样,如果要生成debug,则lib都要是debug的.

4:其他
1)如果出现这种错误_malloc 已经在 msvcrtd.lib msvcr71d.dll
   在程序中忽略掉LIBCMTD

2)如果缺少 mspdb71.dll
   Microsoft Visual Studio .NET 2003Common7IDE 可找到这文件,将这文件拷贝到Microsoft Visual Studio   

  .NET 2003Vc7bin 即可。

3)如果该waveOutSetVolume函数没有定义
   MSDN上说其定义在Wavelib.lib,但是包含winmm.h也可以。

4)源代码有些小bug,普遍"?"后少了一个“'”,要改一下。


参考:
http://blog.csdn.net/sunshine1314/archive/2006/12/13/1442103.aspx
http://spaces.live.com/superjing/blog/cns!593bfa336bbea6dc!734.entry
http://access911.net/getnews/doc1.asp?mode=a&aid=4710656

获得进程及其CPU占用率的源码

分类:默认栏目

第一次原创的帖子-_-!

 

#include "stdafx.h"

#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <tchar.h>
#include <Tlhelp32.h>
#include <pdh.h>

#define MAXPATH 80

int _tmain(int argc, _TCHAR* argv[])
{

 HQUERY          hQuery;
 HCOUNTER        CounterHandle[100];
 PDH_STATUS      pdhStatus;
 PDH_FMT_COUNTERVALUE  fmtValue;
 DWORD          ctrType;
 CHAR            szPathBuffer[MAXPATH] = {'0'};
 int            nRetCode = 0;

 HANDLE m_hProcessSnap = NULL;
 HANDLE m_hProcess = NULL;
 PROCESSENTRY32 m_pe32;
 memset(&m_pe32,0,sizeof(m_pe32));
 m_pe32.dwSize = sizeof(PROCESSENTRY32);

 

 BOOL IsHas = FALSE;

 while (1)
 {

  m_hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  int nProcess;
  pdhStatus = PdhOpenQuery (0, 0, &hQuery);
  if (::Process32First(m_hProcessSnap,&m_pe32))
  {
   nProcess = 0;
   do
   {
    char temp[256];
    char str[256];

    strcpy(temp,m_pe32.szExeFile);

    if ('.' == temp[strlen(temp) - 4])
    {
     temp[strlen(temp) - 4] = '0';
    }

    sprintf(str,"\Process(%s)\%% Processor Time", temp);

    pdhStatus = PdhAddCounter( hQuery,
     str,
     0,
     &CounterHandle[nProcess++]);
   }
   while (::Process32Next(m_hProcessSnap,&m_pe32));
  }
  
  //这里必须调用一次,否则结果为零(我也不知道为什么)
  pdhStatus = PdhCollectQueryData (hQuery);
  Sleep(1000);  
  
  nProcess = 0;

  if (::Process32First(m_hProcessSnap,&m_pe32))
  {
   pdhStatus = PdhCollectQueryData (hQuery);   

   do
   {
    // Get the current value of this counter.
    pdhStatus = PdhGetFormattedCounterValue (CounterHandle[nProcess++],PDH_FMT_DOUBLE,&ctrType,&fmtValue);

    if (pdhStatus == ERROR_SUCCESS)
    {
     if ('M' == m_pe32.szExeFile[0])
     {
      printf("%st CPUt%0.2fn",m_pe32.szExeFile,fmtValue.doubleValue);       
     }
     else
     {
      printf("%st CPUt%0.2fn",m_pe32.szExeFile,fmtValue.doubleValue);
     }
    }
    else
    {
     printf("%stn",m_pe32.szExeFile);
    }
   }
   while (::Process32Next(m_hProcessSnap,&m_pe32));
  }
 
  pdhStatus = PdhCloseQuery (hQuery);
 }
 return nRetCode;
}

 

杀毒软件测试zz

分类:默认栏目

你的杀毒软件有用吗???来测试吧!!!

X5O!P%@AP[4PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

这段代码是欧洲计算机防病毒协会开发的一种病毒代码,,其中的特征码已经包含在各种杀毒软件的病毒代码库里,所以可以用做测试病毒扫描引擎。

下面是等级:

特等:复制完代码后便提示内存有病毒

优等:刚保存完就提示病毒(或者直接删除)

中等:保存后几秒提示病毒(或者直接删除)

下等:需自己启动病毒扫描查杀才提示病毒(或者直接删除)

劣等:无论怎么扫描都无法提示病毒(或者直接删除)

读<中国的兵>有感

分类:默认栏目

整本书有一段话可以说明本书的观点。

“或许,我们不得不承认,历史是残酷的,过分地强调热爱和平往往是可笑的。因为,人们在强调热爱和平时,忘了热爱和平也是要有资格的。狮子和猛虎或许可以平心静气地商谈不必动武而和平地分享动物世界的资源,以免造成不必要的浪费;而绵羊奢谈热爱和平则只能使人感到可悲,因为,一只绵羊如果不热爱和平,它又能热爱什么呢?同理,一个懦弱的民族是没有资格谈论热爱和平的,只有自己有足够的实力,是世界强手之林的一个,才有资格谈热爱和平的问题。这就是现实世界的残酷的法则,而遗憾的是,我们的教育中,这一类的规律讲的太少了”。

 

这个理论可以解释当今世界的大多数国际问题。

如何清理鼠标右键菜单!!(转)

分类:默认栏目

如何清理鼠标右键菜单!!

随着安装软件的不断增多,右键菜单也越来越长,臃肿不堪。这样,本来以快捷菜单自居的右键菜单使用起来反而并不快捷。别急,以下我们就为右键菜单“减负”。

  一、折叠右键二级菜单

  有些软件在右键菜单中有多个命令选项,比如安装WinRAR后,就有数个项目会附加到标准文件和文件夹的右键菜单中。以下设置能够将WinRAR右键菜单全部项目压缩到“WinRAR”子菜单中(操作以WinRAR3.30为例):在WinRAR主窗口,单击“选项”菜单中的“设置”,单击“综合”选项卡,选中“层叠右键关联菜单”复选框,单击“确定”按钮。如果你的电脑右键菜单还有其他软件的多个选项,就由你自己研究将它们组合为右键子菜单的方法吧!

  二、删除不常用菜单项

  或许右键菜单中的有些选项你并不常用,或者,有些软件已被删除,但其右键菜单中的选项却仍占用着屏幕空间。要删除这些无用的右键菜单项,请按下述方法操作:

  1. 单击Windows的“开始”菜单,单击“运行”,在“打开”框中键入“regedit”,单击“确定”按钮,打开“注册表编辑器”窗口。

  2. 展开“HKEY_CLASSES_ROOT*shellexContextMenuHandlers”分支,在其下找到要删除的无用项,然后右键单击该项,再单击“删除”将其删除即可清除右键菜单中的对应选项。对于仅在文件夹右键菜单中才有的选项,可到HKEY_CLASSES_ROOTDirectoryshellHKEY_CLASSES_ROOT
DirectoryshellexContextMenuHandlers分支下查找。有时HKEY_CLASSES_ROOTFoldershell和HKEY_CLASSES_ROOT
FoldershellexContextMenuHandlers分支下也有右键菜单中的选项。

  3.关闭“注册表编辑器”窗口。
        

        三:清除IE右键菜单
1;通过“开始 -> 运行 -> regedit”进入注册表,来到
HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExt”位置,点击文件夹
的“+”号,就可以看到 ,选中不需要的主键,右击鼠标,选择删除命令..........
2;如果还不行就到下边的这个位置再查找下看有没有,有就清除丢。。。
HKEY_USERSDEFAUSTSoftwareMicrosoftInternet ExplorerMenuExt
3;如果右键中有网站连接。打开注册表(C:WindowsRegedit.exe),查找有关该连接名的键值,将找到的(一般只有1个)删除丢。  
4;或者直接通过“开始 -> 运行 -> regedit”进入注册表,来到
“HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExt”位置,点击文件夹的“+”号,我们可以看到常见的下载软件网际快车右键下载等等的信息 ,直接删除您不想要的即可。


  怎么样,经过以上工作,右键菜单清爽多了吧!

使用微软的applocate出现的乱码问题

分类:计算机

在安装Office后,会出现日文。

 

查了一下,解决方法是:

先用applocate选择一个程序
  使用中文开启
  之后在重装office。

 

网上有说修改windows下applog的方法,貌似没有作用。

 

 

日本人所作的朝鲜地下核爆试验设施想像图(转)(恶搞)

分类:默认栏目

看的出是哪个游戏吗?

申请Blog的原因

分类:默认栏目

看到别人都有Blog,所以我也申请一个。

我在博客有家了

分类:默认栏目

 我已经在博客网落户了,欢迎你时常过来看看,大家多多交流哦。我会在这里记录我的工作也会记录我的心情与你分享。也希望你记住我的地址,你可以把她添加到你的收藏夹(Ctrl+D),也可以把她复制下来告诉你的朋友们

 我的博客地址:  http://yeldsd.bokee.com

更多日志..

我的好友

  • newcactus
  • blogteam
  • groupteam

最新评论

友情链接

图片

更多图片..

最新更新博客