开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 12053|回复: 44
打印 上一主题 下一主题
收起左侧

[易语言纯源码] ETV3D例程

[复制链接]
结帖率:92% (33/36)
跳转到指定楼层
楼主
发表于 2014-7-7 15:51:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式   重庆市重庆市
分享源码
界面截图:
是否带模块: -
备注说明: -
wsad控制移动 例程06_加入天空
例程01_最简单窗口 例子07_加入地形
例程02_创建一个模型 例子8_自由摄像机
例程03_带纹理的模型 例子9_摄像机跟踪
例程04_建造简单墙壁和地板 例子10_透明色和双面贴图
例程05_控制移动 例子11_wsad控制移动
例子12_练习
  
按钮1.可视 =   ' 首先使按钮隐藏
引擎.窗口模式 (_启动窗口.取窗口句柄 ())  ' 告诉引擎要执行渲染的窗口
模型 = 场景.创建模型 ()  ' 模型必须先通过场景创建
模型.创建茶壶 ()  ' 大家明白为什么TV3D大都创建一个茶壶模型了吧,因为它不需要模型资源
模型.设置位置 (0, 0, 5)  ' 设置模型的位置
继续 =   ' 逻辑型变量"继续"是是否继续执行渲染循环的条件
循环判断首 ()
引擎.清屏 ()  ' 清屏,清除屏幕上的一切显示,为执行渲染命令做准备
' 在此加入执行渲染的代码
模型.渲染 ()
引擎.渲染 ()  ' 把引擎的计算结果呈递到屏幕上
处理事件 ()  ' 响应窗口事件
循环判断尾 (继续)
子程序名返回值类型公开备 注
__启动窗口_将被销毁  
继续 =   ' 跳出循环


  
窗口程序集名保 留  保 留备 注
窗口程序集1   
变量名类 型数组备 注
引擎引擎类  
场景场景类  
天空天空类  
房间模型类  
球体模型类  
地面地形类  
男角色角色类  
飞机角色类  
角色位置E3D向量  
纹理纹理类  
材质材质类  
输入设备输入设备类  
鼠标x位移   
鼠标y位移   
茶壶纹理索引   
继续逻辑型  
摄像机位置x小数型  
摄像机位置y小数型  
摄像机位置z小数型  
角度小数型  
角度y小数型  
速度系数小数型  

子程序名返回值类型公开备 注
_按钮1_被单击  
按钮1.可视 =   ' 首先使按钮隐藏
设置其它 ()
设置引擎 ()
载入纹理 ()
设置模型 ()
设置天空 ()
执行渲染 ()
子程序名返回值类型公开备 注
设置引擎  
引擎.窗口模式 (_启动窗口.取窗口句柄 ())  ' 告诉引擎要执行渲染的窗口
引擎.设置默认路径 (取运行目录 ()“\资源\”)  ' 告诉引擎我们的资源文件在哪里
引擎.设置调试模式 ()
引擎.设置调试文件 (取运行目录 ()“\除错信息.txt”)  ' 可以查看调试文件来除错,比如是不是有纹理、模型等没有成功载入等
输入设备.初始化 (真, )  ' 必须在引擎创建以后初始化,不能先初始化输入设备再创建引擎
场景.设置透视参数 (60, 3000)  ' 这行的作用不明白的话就注释掉,再运行看看效果应该就明白了
子程序名返回值类型公开备 注
载入纹理  

子程序名返回值类型公开备 注
设置模型  
变量名类 型静态数组备 注
h整数型 
纹理.载入纹理 (“贴图\墙壁\墙壁2.jpg”, “墙壁”)
纹理.载入纹理 (“贴图\地面\地面1.jpg”, “地面”)
纹理.载入纹理 (“贴图\地面\地球.jpg”, “地球”)
纹理.载入纹理 (“贴图\地面\草地.jpg”, “草地”)
纹理.载入纹理 (“贴图\地面\地面2.jpg”, “地面2”)
纹理.载入纹理 (“贴图\地面\沙地.jpg”, “沙地”)
材质.创建发光材质 (0, 0, 0, 1, 0, 0, “材质1”)
' 房间 = 场景.创建模型 ()  ' 模型必须先通过场景创建
房间.添加墙 (取纹理索引 (“墙壁”), 500, -500, -500, -500, 100, 0, 3, 1)  ' 若要编译exe,请将完全注释或删除,不然会出现内存不能为read
房间.添加墙 (取纹理索引 (“墙壁”), -500, -500, -500, 500, 100, 0, 3, 1)
房间.添加墙 (取纹理索引 (“墙壁”), -500, 500, 500, 500, 100, 0, 3, 1)
房间.添加墙 (取纹理索引 (“墙壁”), 500, 500, 500, -500, 100, 0, 3, 1)
房间.添加地板 (取纹理索引 (“地面”), -500, -500, 500, 500, 0, 10, 10)  ' 这几行通过函数名称就可以知道意义了
' 球体 = 场景.创建模型 ()
' 球体.载入TVM文件 (“qiu2.tvm”, 真, )
' 球体.设置纹理 (取纹理索引 (“地球”))
' 球体.设置缩放比 (1, 1, 1)
' 球体.设置位置 (0, 300, 0)
地面 = 场景.创建地形 ()
地面.生成地形 (“贴图\地形\地形2.png”, #地形精度_cTV_PRECISION_HIGH, 10, 10, -1000, 1, -1000, )
地面.设置纹理 (取纹理索引 (“沙地”), )
男角色 = 场景.创建角色 ()
男角色.载入TVA模型 (“TVA\peter\男.tva”, 真, )
男角色.设置位置 (0, 50, 0)
男角色.播放动画 ()
男角色.设置光照模式 (0, , )
飞机 = 场景.创建角色 ()
飞机.载入TVA模型 (“TVA\p\p.tva”, 真, )
飞机.设置位置 (0, 500, 0)
飞机.设置光照模式 (0, , )
飞机.播放动画 ()
' 角色位置.x = 0
' 角色位置.y = 50
' 角色位置.z = 0
' 创建TVA角色 (“TVA\peter\男.tva”, 角色位置)
子程序名返回值类型公开备 注
设置天空  
纹理.载入纹理 (“贴图\天空\前面.jpg”, “前”)
纹理.载入纹理 (“贴图\天空\后面.jpg”, “后”)
纹理.载入纹理 (“贴图\天空\左面.jpg”, “左”)
纹理.载入纹理 (“贴图\天空\右面.jpg”, “右”)
纹理.载入纹理 (“贴图\天空\顶部.jpg”, “顶”)
纹理.载入纹理 (“贴图\天空\底部.jpg”, “底”)
天空.天空盒设置纹理 (取纹理索引 (“前”), 取纹理索引 (“后”), 取纹理索引 (“左”), 取纹理索引 (“右”), 取纹理索引 (“顶”), 取纹理索引 (“底”))
天空.天空盒设置缩放比 (3, 3, 3)
天空.天空盒启用 ()
子程序名返回值类型公开备 注
设置其它  
速度系数 = 0.2
摄像机位置y = 25
继续 = 真
播放MP3 (-1, “mp3\50.mp3”)
子程序名返回值类型公开备 注
控制移动  
如果真 (输入设备.按键是否按下 ( #键盘键码_W ))
摄像机位置x = 摄像机位置x + 求余弦 (角度) × 引擎.取帧周期 () × 速度系数
摄像机位置z = 摄像机位置z + 求正弦 (角度) × 引擎.取帧周期 () × 速度系数
摄像机位置y = 摄像机位置y + 求正弦 (角度y) × 引擎.取帧周期 () × 速度系数

如果真 (输入设备.按键是否按下 ( #键盘键码_S ))
摄像机位置x = 摄像机位置x - 求余弦 (角度) × 引擎.取帧周期 () × 速度系数
摄像机位置z = 摄像机位置z - 求正弦 (角度) × 引擎.取帧周期 () × 速度系数
摄像机位置y = 摄像机位置y - 求正弦 (角度y) × 引擎.取帧周期 () × 速度系数

如果真 (输入设备.按键是否按下 ( #键盘键码_A ))
摄像机位置x = 摄像机位置x - 求正弦 (角度) × 引擎.取帧周期 () × 速度系数
摄像机位置z = 摄像机位置z + 求余弦 (角度) × 引擎.取帧周期 () × 速度系数
如果真 (输入设备.按键是否按下 ( #键盘键码_D ))
摄像机位置x = 摄像机位置x + 求正弦 (角度) × 引擎.取帧周期 () × 速度系数
摄像机位置z = 摄像机位置z - 求余弦 (角度) × 引擎.取帧周期 () × 速度系数
如果真 (输入设备.按键是否按下 ( #键盘键码_空格 ))
摄像机位置y = 摄像机位置y + 引擎.取帧周期 () × 速度系数
如果真 (输入设备.按键是否按下 ( #键盘键码_左Ctrl ))
摄像机位置y = 摄像机位置y - 引擎.取帧周期 () × 速度系数

' 摄像机位置y = 地面.取位置高度 (摄像机位置x, 摄像机位置z) + 100
输入设备.取鼠标状态 (鼠标x位移, 鼠标y位移)
如果真 (取绝对值 (鼠标x位移) > 0)
角度 = 角度 - 引擎.取帧周期 () × 0.01 × 鼠标x位移

如果真 (取绝对值 (鼠标y位移) > 0)
角度y = 角度y - 引擎.取帧周期 () × 0.01 × 鼠标y位移
如果真 (取绝对值 (角度y) > 1.5)
角度y = 取符号 (角度y) × 1.5


场景.设置摄像机 (摄像机位置x, 摄像机位置y, 摄像机位置z, 摄像机位置x + 求余弦 (角度), 摄像机位置y + 求正弦 (角度y), 摄像机位置z + 求正弦 (角度))
' 以上函数均为通过获取键盘键值来改变摄像机的位置和视向,至于算法,可以通过在纸上画一下图来分析,具体就不多说了
子程序名返回值类型公开备 注
执行渲染  
循环判断首 ()
控制移动 ()
引擎.清屏 ()
天空.天空盒渲染 ()
场景.渲染所有 ()  ' 如果模型、角色等较多,就不要使用这个函数,会降低渲染速度
引擎.渲染 ()
处理事件 ()
球体.绕y旋转 (-0.001, )
循环判断尾 (继续)
子程序名返回值类型公开备 注
__启动窗口_将被销毁  
继续 = 假
子程序名返回值类型公开备 注
飞机  





补充内容 (2014-11-9 10:06):
下载地址不可以用了

QQ截图20140707154225.png (973.01 KB, 下载次数: 7)

QQ截图20140707154225.png

评分

参与人数 2好评 +1 精币 +7 收起 理由
汉族 + 2 支持开源~!感谢分享
半夏时光 + 1 + 5 感谢分享,很给力!~

查看全部评分


头像被屏蔽
结帖率:0% (0/1)
沙发
发表于 2014-7-7 15:53:50 | 只看该作者   广东省中山市
很喜欢ETV3D,但是版本太杂了,很郁闷。
回复 支持 反对

使用道具 举报

结帖率:92% (190/207)

签到天数: 8 天

板凳
发表于 2014-7-7 15:54:37 | 只看该作者   广东省汕头市
看下喔      
回复 支持 反对

使用道具 举报

结帖率:100% (27/27)
地板
发表于 2014-7-7 16:04:07 | 只看该作者   河南省濮阳市
好厉害的样子

点评

  重庆市重庆市  发表于 2014-10-25 00:36
回复 支持 反对

使用道具 举报

结帖率:79% (11/14)

签到天数: 2 天

地下
发表于 2014-7-7 16:12:35 | 只看该作者   云南省昆明市
大表哥给力
回复 支持 反对

使用道具 举报

结帖率:86% (25/29)
6
发表于 2014-7-9 07:39:20 | 只看该作者   山西省晋城市
#在这里快速回复#感谢分享,很给力!~
回复 支持 反对

使用道具 举报

结帖率:18% (10/56)
7
发表于 2014-7-9 14:47:10 | 只看该作者   江苏省盐城市
我来学习一下,谢谢分享!
回复 支持 反对

使用道具 举报

签到天数: 2 天

8
发表于 2014-7-13 22:54:10 | 只看该作者   山东省临沂市
超赞。。
回复 支持 反对

使用道具 举报

结帖率:87% (20/23)

签到天数: 9 天

9
发表于 2014-7-13 22:57:26 | 只看该作者   广东省东莞市
地址失效建议重发
回复 支持 反对

使用道具 举报

结帖率:92% (33/36)
10
 楼主| 发表于 2014-7-14 07:51:53 | 只看该作者   重庆市重庆市
本帖最后由 天青 于 2014-7-14 07:52 编辑

别下上面的了上面的下不起新的下载地址;

下载地址.rar

134 Bytes, 下载次数: 87, 下载积分: 精币 -2 枚

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:[email protected]
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表