关于作者

用户名:牡蛎
笔名:冰冻牡蛎
地区:
行业:其他

日历  

快速登录

+ 用户名:
+ 密 码:

在线留言



Blender

脚本语言

教学制作软件

版权申明

凡欲转载、部分转载、引用我原创的文章,请标明作者是牡蛎,同时给出原始连接;可以部分转载、引用我的文章,前提是这不会引起他人误解我的原意。未经书面允许,我的文章、文章部分不可以用于商业用途(含传统出版物、需要积分或者虚拟货币才可以浏览的网上内容)。如果你不同意,请勿转载、部分转载、引用。谢谢合作。

访问统计:
文章个数:256
评论个数:386
留言条数:26




Powered by BlogDriver 2.1

牡蛎的混沌世界

 

开源CG软件,特别是Blender 还有其他杂七杂八的东西

文章

●Python悬疑  (作者置顶)

真是烦人,碰到一些问题,解决不了,几个mail list或者bbs上都提出了问题,但是就是无人可以解决,放出来看看有没有奇迹发生吧。我使用win2k、py24和25

1.用wxpython编写一个简单网页浏览器,其实也不简单,因为——如何捕获那些新弹出的页面(newwindow2)事件,并且让新页面可以显示在当前的frame中或者新的frame中——而绝不是在系统默认的浏览器中弹出

2.http://osdir.com/ml/python.ctypes/2005-09/msg00024.html提出一种跨平台的、返回FILE指针的方案,
import sys
import ctypes
class FILE(ctypes.Structure):pass

FILE_P = ctypes.POINTER(FILE)

PyFile_AsFile = ctypes.pythonapi.PyFile_AsFile
PyFile_AsFile.argtypes = [ctypes.py_object]
PyFile_AsFile.restype = FILE_P

stdout_file = PyFile_AsFile(sys.stdout)

fputs=ctypes.cdll.msvcrt.fputs
fputs.argtypes=[ctypes.c_char_p, FILE_P]
fputs.restype=ctypes.c_int
fputs("Hello, there.\n", stdout_file)
但是这个代码只会出错
H:\sap-24>h:\python25\python pyfile2.py
Traceback (most recent call last):
File "pyfile2.py", line 17, in
fputs("Hello, there.\n", stdout_file)
WindowsError: exception: access violation writing 0x00000010

3.我打算用ctypes+wx.net的wx-c.dll实现一个较小的GUI方案(也就是,我知道wxPython之类的,不用麻烦各位再推荐),这里的代码虽然可以显示frame,但是总是报错说“unexpected parameter 'mini.py'”,于是不得不点击“确定”按钮退出。其中mini.py是我的程序的名字。wx-c.dll取自http://prdownloads.sourceforge.net/wxnet/wx.NET-0.7.2-Windows-Build.zip?download ——是的,这是一个纯C的wxWidget接口,不是C++也不是.NET的,wx.net以及www.freebasic.net均使用它开发GUI程序
from ctypes import *

wx=CDLL('wx-c.dll')

class _wxApp(Structure):pass
PTR_wxApp=POINTER(_wxApp)

wxApp=wx.wxApp_ctor
wxApp.restype=PTR_wxApp

wxApp_RegisterVirtual=wx.wxApp_RegisterVirtual
wxApp_RegisterVirtual.restype=None

_wxApp_Run=wx.wxApp_Run
_wxApp_Run.restype=None
def wxApp_Run():
    argc=0
    argv=''
_wxApp_Run(argc, argv)

class _wxFrame(Structure):pass
PTR_wxFrame=POINTER(_wxFrame)

wxFrame=wx.wxFrame_ctor
wxFrame.restype=PTR_wxFrame

class _wxFrame(Structure): pass
PTR_wxFrame=POINTER(_wxFrame)
wxFrame_Create=wx.wxFrame_Create
wxFrame_Create.restype=c_int

class _wxSize(Structure): pass
PTR_wxSize=POINTER(_wxSize)

wxSize=wx.wxSize_ctor
wxSize.restype=PTR_wxSize

wxWindow_Show=wx.wxWindow_Show
wxWindow_Show.restype=None

wxApp_OnInit=wx.wxApp_OnInit
wxApp_OnInit.restype=c_int

class _wxBoxSizer(Structure):pass
PTR_wxBoxSizer=POINTER(_wxBoxSizer)
wxBoxSizer=wx.wxBoxSizer_ctor
wxBoxSizer.restype=PTR_wxBoxSizer

wxWindow_SetAutoLayout=wx.wxWindow_SetAutoLayout
wxWindow_SetAutoLayout.restype=None

wxWindow_SetSizerAndFit=wx.wxWindow_SetSizerAndFit
wxWindow_SetSizerAndFit.restype=None

def Callback(restype=None, *optional):
    return CFUNCTYPE(restype, *optional)

wxDEFAULT_FRAME_STYLE =(0x0800|0x0040|0x0400|0x0200|0x20000000|0x00400000)

global app, sizer

@Callback(c_int)
def App_OnInit( ):
    global app, sizer
    frame = wxFrame( )
    wxFrame_Create( frame, 0, 1, "Pure python Wxwidget",
                                 wxSize( -1, -1 ), wxSize( -1, -1 ),
                                 wxDEFAULT_FRAME_STYLE , "frame")
                                 wxWindow_Show( frame, 1 )
    return wxApp_OnInit( app )

@Callback(c_int)
def App_OnExit():
    return wxApp_OnExit( app )

app = wxApp( )
wxApp_RegisterVirtual( app, App_OnInit, App_OnExit )
wxApp_Run()

4.打算写一个所见所得(WYSIWG)的图文编辑器,但是发现wxPython保存文件时,把图片嵌入其中了,而我需要的是,保存文件的本地文件名。在wxPython的列表上提问,答案是自定义io文件格式的接口仍不可用

5.实在看不去和wxPython官方例子区别何在的代码
使用wxpython-2.8-msw-unicode的RichTextCtrl,但是ctrl+c/v/p/x/y都会报告
Traceback (most recent call last):
File "H:\bug_main.py", line 67, in ForwardEvent
self.rtc.ProcessEvent(evt)
RuntimeError: maximum recursion depth exceeded

但是wxpython自带的demo\RichTextCtrl.py却不会报错,所以问题应该是在我的代码中。

无奈检查不出来——我的evt处理,实在看不出和原版的demo有什么不同——哪位帮忙指
点一下迷津吧(请别说os.sys.setrecursionlimit),谢谢

报错的代码

import wx
import wx.richtext as rt

class MyFrame(wx.Frame):
    def __init__(self, *args, **kwds):
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)

        # Menu Bar
        self.frame_1_menubar = wx.MenuBar()
        self.fileMenu = wx.Menu()
        self.mnuitmFileExit = wx.MenuItem(self.fileMenu, wx.NewId(),
                          "E&xit\tCtrl+Q", "", wx.ITEM_NORMAL)
        self.fileMenu.AppendItem(self.mnuitmFileExit)
        self.frame_1_menubar.Append(self.fileMenu, "&File")
        self.editMenu = wx.Menu()

        self.mnuitmEditUndo = wx.MenuItem(self.editMenu, wx.NewId(),
                        "&Undo\tCtrl+Z", "", wx.ITEM_NORMAL)
        self.editMenu.AppendItem(self.mnuitmEditUndo)
        self.mnuitmEditRedo = wx.MenuItem(self.editMenu, wx.NewId(),
                        "&Redo\tCtrl+Y", "", wx.ITEM_NORMAL)
        self.editMenu.AppendItem(self.mnuitmEditRedo)
        self.mnuitmEditCut = wx.MenuItem(self.editMenu, wx.NewId(),
                        "Cu&t\tCtrl+X", "", wx.ITEM_NORMAL)
        self.editMenu.AppendItem(self.mnuitmEditCut)
        self.mnuitmEditCopy = wx.MenuItem(self.editMenu, wx.NewId(),
                        "&Copy\tCtrl+C", "", wx.ITEM_NORMAL)
        self.editMenu.AppendItem(self.mnuitmEditCopy)
        self.mnuitmEditPaste = wx.MenuItem(self.editMenu, wx.NewId(),
                        "&Paste\tCtrl+V", "", wx.ITEM_NORMAL)
        self.editMenu.AppendItem(self.mnuitmEditPaste)
        self.frame_1_menubar.Append(self.editMenu, "&Edit")

        self.SetMenuBar(self.frame_1_menubar)
        # Menu Bar end

        self.rtc = rt.RichTextCtrl(self, -1, style=wx.VSCROLL|wx.HSCROLL)
        self.__set_properties()
        self.__do_layout()

        self.Bind(wx.EVT_MENU, self.onFileExit, self.mnuitmFileExit)
        self.Bind(wx.EVT_MENU, self.ForwardEvent, self.mnuitmEditUndo)
        self.Bind(wx.EVT_MENU, self.ForwardEvent, self.mnuitmEditRedo)
        self.Bind(wx.EVT_MENU, self.ForwardEvent, self.mnuitmEditCut)
        self.Bind(wx.EVT_MENU, self.ForwardEvent, self.mnuitmEditCopy)
        self.Bind(wx.EVT_MENU, self.ForwardEvent, self.mnuitmEditPaste)

    def __set_properties(self):
        wx.CallAfter(self.rtc.SetFocus)
        self.rtc.Freeze()
        self.rtc.WriteText("Hello")
        self.rtc.Thaw()

    def __do_layout(self):
        grid_sizer_1 = wx.FlexGridSizer(1, 1, 5, 0)
        grid_sizer_4 = wx.FlexGridSizer(5, 1, 2, 0)
        grid_sizer_4.Add(self.rtc, 0, wx.EXPAND, 0)
        grid_sizer_4.AddGrowableRow(0)
        grid_sizer_4.AddGrowableCol(0)
        grid_sizer_1.Add(grid_sizer_4, 1, wx.ALL|wx.EXPAND, 0)
        self.SetSizer(grid_sizer_1)
        grid_sizer_1.Fit(self)
        grid_sizer_1.AddGrowableRow(0)
        grid_sizer_1.AddGrowableCol(0)
        self.Layout()
        self.Centre()

    def onFileExit(self, evt):
        self.Close(True)

    def ForwardEvent(self, evt):
        self.rtc.ProcessEvent(evt)
   
if __name__ == "__main__":
        app = wx.PySimpleApp(0)
        wx.InitAllImageHandlers()
        frame_1 = MyFrame(None, -1, "")
        app.SetTopWindow(frame_1)
        frame_1.Show()
        app.MainLoop()

- 作者: 冰冻牡蛎 2008年01月7日, 星期一 21:53  回复(3) |  引用(0) 加入博采

●版权申明暨敬告文抄公  (作者置顶)
  1. 凡欲转载、部分转载、引用我原创的文章,请标明作者是牡蛎,同时给出文章原始连接;可以部分转载、引用我的文章,前提是这不会引起他人误解我的原意。
  2. 未经书面允许,我的文章、文章部分不可以用于商业用途(含传统出版物、需要积分或者虚拟货币才可以浏览的网上内容)。
  3. 禁止这样的网站转载我的任何文章,即该网站会说“本文章版权归原始作者及我网站所有”这样的话——我的文章的版权只属于我自己,和转载网站没有任何关系!

如果你不同意,请勿转载、部分转载、引用。谢谢合作。

- 作者: 冰冻牡蛎 2007年05月25日, 星期五 13:03  回复(0) |  引用(0) 加入博采

已锁定  (作者置顶)
此日志的浏览权限已被作者锁定,请同作者联系,发送短消息,如果你的身份符合作者的要求,点击此处可以进行浏览

- 作者: 冰冻牡蛎 2007年01月27日, 星期六 11:12  回复(1) |  引用(0) 加入博采

●我做过的练手项目
python
libharu的接口
rmchart的接口
ming swf的接口
某种中文语言->BASIC的翻译(未发布)
某编译原理课本中自定义简单语言的解释器
iup的接口(未发布)
iText的接口(未发布)。ReportLabs的开源PDF模块,不能使用现成PDF;还是iText给力
几个软件的bug

中文化
Blender
wink

freebasic
一个推箱子游戏

forth
4th

- 作者: 冰冻牡蛎 2011年04月18日, 星期一 23:34  回复(0) |  引用(0) 加入博采

●李倩:“免费公路将超96%”是个数字游戏

原文 http://view.news.qq.com/a/20110326/000019.htm

关键文字:

据统计,在全球的14万公里收费公路中,中国就占了约10万公里。而据何建中先生的介绍,截至2010年底,全国公路网总里程达到398.4万公里。经过简单的计算就可得出,中国现在的收费公路比例约为2.5%,如果按照收费公路占4%的设想,那收费公路的总里程不仅不会减少,还将进一步增加。这分明是想加大力度从百姓口袋里捞钱。

- 作者: 冰冻牡蛎 2011年03月27日, 星期日 18:41  回复(0) |  引用(0) 加入博采

●“人家不差几千块钱,不需要我捐钱”

总是看到有人问”blender25什么时候支持中文啊,人家max/maya/……”都支持中文。

这类问题,其实完全可以捐钱给blender开发者,让其去改善(链接暂时忘了,知道的同学请提醒我)。

但是一提捐钱,就会出现另一种论调“人家不差几千块钱”。

暂时没有实力捐钱,也就算了,但是请不要信口乱说“人家不差几千块钱”!

我们来看看

1.The Ocean Sim,这是一个blender使用的“海洋程序化纹理”插件。以前是针对blender24系列开发的,2010年11月募集资金,针对blender25重写

我们从sponsors列表中可以看出,只要超过75美元,就是“Gold Sponsors”(金牌资助者) 。而这个超募资金的活动早已顺利完成,开发者已经向资助者提供了演示版本的软件

2.最近的blendernation上放出一个bge的游戏,是一个“基于捐款继续开发的科幻冒险游戏”

3.我们所使用的blender,在2002年7月,Ton取得NaN投资者同意“只要筹集够了100,000欧元,就让Blender成为开源软件”。在7个月之后,募捐达到了100,000欧元;2002年10月13日,blender做为GPL软件放出现在找不到捐款记录了,但是我想还是会有较多用户捐出几十或者几百美元的。

肯定会有人说“几百美元和100000欧元没法比啊”,这样的说法我不做评论

所以,我的结论是有钱的,给开发者赞助点钱,别人不会嫌钱少的——就像我不嫌弃全国人民每个人只捐给我一分钱;没钱的,老老实实用你的blender,不要乱说话!

- 作者: 冰冻牡蛎 2011年01月22日, 星期六 15:36  回复(0) |  引用(0) 加入博采

●开设了一个新栏目:速度
好久没有更新了。按时间顺序,本次记录如下:
1。修改了一下Pixelate3D脚本,这样在blender24上就没有警告了。当然最主要的修改是“提速”,进行的一次简单测试表明,速度提升了接近4x——而所做的修改真是简单啊。当然,这个脚本的速度还是很慢,例如以0.2*0.2*0.2的间隔,好几个小时都无法完成我的“卡通蛇”的转换。难道要动C……
2。购买的GPU工作站即将到货。而通过和amaxit沟通,我单位也加入了该公司的“典型用户”列表。对今后的工作,许个愿吧
3。博客添加“速度”一栏

- 作者: 冰冻牡蛎 2010年12月13日, 星期一 15:21  回复(0) |  引用(0) 加入博采

●牙髓炎——慎用杀神经

写在最前面的话:别急着根管治疗、杀神经,先用药物试试;牙疼、有龋齿,尽早治疗,发展到伤神经就是费钱、伤人的事了

我因为牙疼,去专门的口腔医院治疗--以为它是专业的,所以相信医院有最合适的方案

医生在询问了症状、查看了牙齿上的小裂纹之后,就告诉说需要开髓,治疗过程要来需要几趟,以后因为弄死牙髓(俗称杀神经),所以这颗牙齿不会再有营养供应,从而变脆易碎。通俗讲,它死了

治疗过程不详述了,有拍片、开髓、牙髓失活过程。现在这颗牙已经被封了失活剂。换句话说,我和医生合伙在慢性谋杀它,谋杀一个陪伴了我几十年的朋友!

回来后,上网看相关内容,似乎多数网友治牙痛,都直接“被”采用了杀神经方法。只有所谓的“常识”或者“医药问答”中,才看到说只有在没有其它解决牙髓症状时才杀神经

那么,在国内的牙科中,到底有多少牙医在治疗中会从患者角度考虑、尽量保全牙髓呢?

以下来自网络

1.一般有经验的牙医,都会看患者的牙髓炎是否已经到了没有其他办法止痛消炎的地步,来建议患者做根管治疗,毕竟是将好牙变成死牙,一般都比较慎重,近年来也发现有不少无良医生,为了利益,没到需要的地步,动不动也建议患者进行根管治疗,有滥用之嫌


2.防治牙髓炎可使用牙齿黄金(一种药物,原理是通过生物萃取而成的有效成份对牙龈的特殊作用,使牙龈能对牙髓的炎症予以迅速吸收)使得当天就基本消除牙痛,对伴有急性牙龈炎(牙龈红肿,俗称风火牙痛)的人,配合服用牛黄解毒片

3,一个很幽默的记述杀神经的文章:“在谈及如何杀死牙神经之前,首先要解释为什么要杀死牙神经。没有无缘无故的爱,也没有无缘无故的恨。起了杀机的理由主要是痛,整晚整晚的痛,在床上打滚,滚来滚去,滚来滚去”

全文在 http://www.zgkq.com/answerhtml/zgkq2453.html

- 作者: 冰冻牡蛎 2010年02月23日, 星期二 21:53  回复(0) |  引用(0) 加入博采

●我实在受不了了

时钟指针答答的走着,一切那么宁静,宁静地可怕
突然,指针停了、时间到了,从角落里猛的跳出来一个舞蹈型僵尸
一个母僵尸,边走边搔首弄姿
所有人类霎间都被僵尸传染了,只见群魔乱舞,舞向屏幕外面的我

啊,救命啊~~~

- 作者: 冰冻牡蛎 2010年01月26日, 星期二 12:21  回复(2) |  引用(0) 加入博采

●华人高锟及两名美科学家获2009诺贝尔物理学奖

我估摸着,国内媒体又要翻出以往的文稿,重贴出来搞个“大陆为啥没有自己的诺贝尔奖获得者”的讨论。

可是,戏子(娱乐节目)哪有诺贝尔奖?何止戏子,国内流行的嘴皮子(各类讲坛)、笔杆子(见下面,我可不是说写小说哦)也都没有诺贝尔奖啊。

教育部:中国高校科研能力世界排名第五(教育部副部长郝平说,创建世界一流大学计划启动以来,中国高校的科研能力不断提升,按科技论文数排序,中国自2004年以来一直排在世界第五位,论文数排在世界前四位的是美国、英国、德国、日本。)

- 作者: 冰冻牡蛎 2009年10月7日, 星期三 12:05  回复(0) |  引用(0) 加入博采