开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 12046|回复: 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 感谢分享,很给力!~

查看全部评分


结帖率:100% (3/3)

签到天数: 6 天

43
发表于 2022-4-16 18:05:53 | 只看该作者   河南省开封市
tva模型怎么生成制作的,一直找不到这方面的教程
回复 支持 反对

使用道具 举报

签到天数: 1 天

42
发表于 2022-4-7 17:14:57 | 只看该作者   湖南省张家界市
希望能够补上,感谢
回复 支持 反对

使用道具 举报

签到天数: 1 天

41
发表于 2022-4-7 17:14:41 | 只看该作者   湖南省张家界市
(114200)分享资源已经删除
回复 支持 反对

使用道具 举报

40
发表于 2020-4-1 16:25:36 | 只看该作者   河南省郑州市
谢谢   很感谢
回复 支持 反对

使用道具 举报

39
发表于 2019-9-29 21:34:47 | 只看该作者   河北省保定市
xiexie谢谢
回复 支持 反对

使用道具 举报

38
发表于 2019-5-7 20:17:47 | 只看该作者   四川省攀枝花市
awfawf aefsadgdfsg
回复 支持 反对

使用道具 举报

37
发表于 2019-3-1 09:10:20 | 只看该作者   江苏省苏州市
崇拜大神,牛啊
回复 支持 反对

使用道具 举报

36
发表于 2018-9-15 16:27:42 | 只看该作者   福建省*
666666666666666666
回复 支持 反对

使用道具 举报

35
发表于 2018-8-25 23:23:06 | 只看该作者   湖北省黄冈市
wrygerhehr5ehrsthrt
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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