2017-09-15 18:00:58 cqh963852 阅读数 160
  • 虚幻4开发入门

    UnrealEngine向来以一流效果和难以上手而著称,本课程就是帮助你跨过入门的这道门槛,能够上手掌握这个国际一流的3D引擎。

    64988 人正在学习 去看看 房燕良

electron仿制UnrealEngine4蓝图功能模块


这里写图片描述
1. electron的下载和安装
2. 右键菜单的实现
右键菜单
累的吐血。。。
这里写图片描述
2017/9/22更新
菜单节点控制

var treeMenuNode = {
    instantObject: function (name,type) {
        var treeMenuNode = new Object();
        // console.log('generate treeMenuNode');

        treeMenuNode.name = arguments[0];
        treeMenuNode.tpye = arguments[1];
        treeMenuNode.childrenNodes = new Array();
        treeMenuNode.setChildrenNodes = function(array){
            // this.childrenNodes = arguments[0].slice();
            this.childrenNodes = arguments[0];
        }
        treeMenuNode.addChild = function(treeMenuNode){
            // console.log('addChild')
            this.childrenNodes.push(arguments[0]);
        }
        treeMenuNode.attacheTo = function(Node){
            // console.log('attacheTo')
            arguments[0].childrenNodes.push(treeMenuNode)
        }
        treeMenuNode.testfunction = function(){

        }
        treeMenuNode.traverse = function(textStack,tempStack){
            // console.log()
            // // console.log()
            // arguments[0].push(treeMenuNode.name);
            if(treeMenuNode.tpye == 'folder')
            {   
                arguments[0].push(
                '<customFolder>'+
                "<customFolderDeatils isOpen='false'>"+
                '>'+
                treeMenuNode.name+
                "</customFolderDeatils>"
                )
                // arguments[1].push(treeMenuNode)
                for(var i = 0;i<treeMenuNode.childrenNodes.length;i++)
                {
                    // console.log('test')
                    treeMenuNode.childrenNodes[i].traverse(arguments[0],arguments[1]);
                }
                arguments[0].push(
                    '</customFolder>'
                )
            }
            else
            {
                arguments[0].push(
                    '<customNode>'+
                    treeMenuNode.name+
                    '</customNode>'
                )
            }
            return;
        }
        return treeMenuNode;
    }
}

var treeMenuOptions = {
    instantObject: function(elem,MenuNodes){
        var treeMenuOptions = new Object();
        treeMenuOptions.elem = arguments[0];
        treeMenuOptions.treeMenuNodes = new Array();
        treeMenuOptions.treeMenuNodes = arguments[1];
        // console.log('generate treeMenuOptions')
        return treeMenuOptions
    }
}

var treeMenu = {
    instantObject: function (MenuOptions) {
        var treeMenu = new Object();
        treeMenu.treeMenuOptions = arguments[0];
        treeMenu.treeTextStack = new Array();
        treeMenu.treeTempStack = new Array();
        treeMenu.spawnTreeMenu = function(){
            for(var i = 0;i<treeMenu.treeMenuOptions.treeMenuNodes.length;i++)
            {
                treeMenu.treeMenuOptions.treeMenuNodes[i].traverse(treeMenu.treeTextStack);
            }
            var x = document.getElementById(treeMenu.treeMenuOptions.elem)
            x.innerHTML = treeMenu.treeTextStack.join('');
        }

        // console.log('generate treeMenu');
        return treeMenu;
    }
}


var treeMenuNode_1_3 = treeMenuNode.instantObject('testobject3');
var treeMenuNode_1_2 = treeMenuNode.instantObject('testobject2');
var treeMenuNode_1_1 = treeMenuNode.instantObject('testobject1');
var treeMenuNode_2_3 = treeMenuNode.instantObject('testobject3');
var treeMenuNode_2_2 = treeMenuNode.instantObject('testobject2');
var treeMenuNode_2_1 = treeMenuNode.instantObject('testobject1');


var treeMenuNode_1 = treeMenuNode.instantObject('object','folder');
var treeMenuNode_2 = treeMenuNode.instantObject('function','folder');
treeMenuNode_1.setChildrenNodes([treeMenuNode_1_1,treeMenuNode_1_2,treeMenuNode_1_3]);
treeMenuNode_2.setChildrenNodes([treeMenuNode_2_1,treeMenuNode_2_2,treeMenuNode_2_3]);


var myTreeMenuOptions = treeMenuOptions.instantObject('test',[treeMenuNode_1,treeMenuNode_2]);
var myTreeMenu = treeMenu.instantObject(myTreeMenuOptions);
myTreeMenu.spawnTreeMenu();
// console.log(myTreeMenu.treeMenuOptions.elem);
console.log(myTreeMenu.treeTextStack.join(''));

function addTree()
{
    var treeMenuNode_1_3 = treeMenuNode.instantObject('testobject3');
    var treeMenuNode_1_2 = treeMenuNode.instantObject('testobject2');
    var treeMenuNode_1_1 = treeMenuNode.instantObject('testobject1');
    var treeMenuNode_2_3 = treeMenuNode.instantObject('testobject3');
    var treeMenuNode_2_2 = treeMenuNode.instantObject('testobject2');
    var treeMenuNode_2_1 = treeMenuNode.instantObject('testobject1');


    var treeMenuNode_1 = treeMenuNode.instantObject('object','folder');
    var treeMenuNode_2 = treeMenuNode.instantObject('function','folder');
    treeMenuNode_1.setChildrenNodes([treeMenuNode_1_1,treeMenuNode_1_2,treeMenuNode_1_3]);
    treeMenuNode_2.setChildrenNodes([treeMenuNode_2_1,treeMenuNode_2_2,treeMenuNode_2_3]);


    var myTreeMenuOptions = treeMenuOptions.instantObject('test',[treeMenuNode_1,treeMenuNode_2]);
    var myTreeMenu = treeMenu.instantObject(myTreeMenuOptions);
    // myTreeMenu.spawnTreeMenu();
    // alert('123')
    // alert(myTreeMenu.treeTextStack.length)
    myTreeMenu.spawnTreeMenu();
}

暂时功能为:生成树状菜单,
需要结合css进行样式控制
控制js脚本进行折叠控制。
代码写在博客里面还是有点麻烦,等有空了去git开个仓库。思路写博客,代码存仓库

2017/9/27
调整项目结构
目录结构
渲染与页面分开
3. 节点的实现
4. 通过菜单放置节点
5. 节点的完善
6. 抽象二叉树的生成
7. LLVM接口调用
8. 程序运行
flag立好了,哈哈哈。

2017-11-23 13:50:18 zhuyingqingfen 阅读数 868
  • 虚幻4开发入门

    UnrealEngine向来以一流效果和难以上手而著称,本课程就是帮助你跨过入门的这道门槛,能够上手掌握这个国际一流的3D引擎。

    64988 人正在学习 去看看 房燕良


通过修改UnrealEngine4的源代码,可以让头盔和立体电视协同展示相同的画面,已经测试过的是SteamVR HTC vive头盔,理论上使用Ocluse 应该也是OK的,不过需要进一步测试。


整体效果还是很不错的,不会影响头盔的立体效果,也可以让电视同时出左右眼的主动立体。


临时占个坑,有空上图展示。


2019-02-25 17:43:37 qq_21153225 阅读数 2199
  • 虚幻4开发入门

    UnrealEngine向来以一流效果和难以上手而著称,本课程就是帮助你跨过入门的这道门槛,能够上手掌握这个国际一流的3D引擎。

    64988 人正在学习 去看看 房燕良

在github上加入Epic账户

在此处下载源码:https://github.com/EpicGames/UnrealEngine

下载后解压(注意文件夹名称英文,且文件目录名不要过长),保持联网,双击Setup.bat,等待安装完毕

国内网速,1M/S左右,下载安装大约1~2小时

安装完毕后,先打开VS2017,查看是否为最新版本。

双击UE4.sln

设置目标平台为UE4,build即可

本人cpu为AMD 1950X 16 core,UE4 4.21版本。建议放到固态硬盘中进行编译,本人在机械硬盘中编译用了10小时左右。

2016-11-04 23:38:33 insul 阅读数 2814
  • 虚幻4开发入门

    UnrealEngine向来以一流效果和难以上手而著称,本课程就是帮助你跨过入门的这道门槛,能够上手掌握这个国际一流的3D引擎。

    64988 人正在学习 去看看 房燕良
打不开ue4工程时或者运行UEEditor崩溃,删除临时文件,只需保留以下文件夹
Conifg,  Content & Source 以及 .uproject
2015-03-06 09:58:09 TinyHum 阅读数 4205
  • 虚幻4开发入门

    UnrealEngine向来以一流效果和难以上手而著称,本课程就是帮助你跨过入门的这道门槛,能够上手掌握这个国际一流的3D引擎。

    64988 人正在学习 去看看 房燕良

首发地址:


http://98jy.net/group/3/thread/10


作为一个行内非常知名、而且的确牛逼(licence费用曾经高达传说中的千万RMB)的引擎。近日宣布开源(稍早期也采用了平民价120RMB每月)并且免费供游戏开发者使用,对盈利的游戏,按照5%的毛利来分成即可。关键之处在于,对于教学、影视、建筑等也就是非游戏产品,虚幻4并不收取任何费用。

 

这下unity的licence费用就显的贵了!

 

那么unity的另外一个杀手锏“跨平台”呢?按照官方的公布,目前为止,unity已经可以支持到17个平台(平台列表这里可以看到)。比较unrealengine4(虚幻4),这个数字大致是9(web方面的支持unity是通过自己的插件,虚幻4直接走html5线路)。数字上有些差距,但是问题不在这里,在于主流平台,如Windows、MacOS、iOS、Android,两者都支持。

 

那么,unity可以骄傲的还有什么?assetstore、插件机制,看虚幻4都已经在着手做了。但这不是重点。这些方面只是让unity邀请了全球的开发者帮助其以小博大的方式。它目前占有45%市场份额的功劳,应该归功于它的跨平台性和原来的“廉价”,插件机制只是加速了它成功的过程。

 

唯一可以骄傲的也许就是它因为早期的平民性,开发性留下来的资料了,能在这么一个靠技术吃饭的领域里面混的这么快,它的社区资源推动了整个革命。虚幻和德国的CryEngine,一直在封闭的圈子里混,因而被这个小家伙后来者居上。缺少的就是交流的圈子,没有走好生态线路。

 

那么现在UnrealEngine4直接一把到底了,相比较unity,少的也就是个生态,圈子。凭着它在这个领域圈金字塔尖的影响力,只要一路走下去,稳扎稳打,生存的空间会比原来开阔的很多。时间久了,跟unity平分秋色应该可以期待。

没有更多推荐了,返回首页