天道酬勤,学无止境

MSON to describe object attributes in blueprint

I have an issue similar to what is described here.

I have a JSON that looks like this:

{
  "photos": [
    {
      "key": "y37dmj10jkwof/moOIUB8912JKVgh",
      "caption": "A world of gamers.",
      "tags": [
        "game",
        "japan"
      ],
      "attributes": {
        "copyright": true,
        "use": [
          "public",
          "private"
        ]
      }
    }
  ]
}

and I am trying to describe the attributes using MSON, to render the blueprint. However, I am not successful at it. Here is my attempt:

+ Attributes (required, object)
    + photos (required, array)
        + (object)
            + key (required, string) - Photo key
            + caption (required, string) - Photo caption
            + tags (required, array)
                + game (string)
                + japan (string)
            + attributes (required, object)
                + (object)
                    + copyright: true (required, boolean)
                    + uses (required, array)
                        + public (string)
                        + private (string)

Ideas anyone? Any input would be highly appreciated.

评论

Here's an example that I think does what you want:

+ Attributes
    + photos (required, array)
        + (object)
            + key: y37dmj10jkwof/moOIUB8912JKVgh (required) - Photo key
            + caption: A world of gamers (required) - Photo caption
            + tags: game, japan (required, array)
            + attributes (required)
                + copyright: true (required, boolean)
                + use: public, private (required, array)

Note that you can put the sample values for the arrays as a comma separated list, and there's usually no need to explicitly state when the type is a string or object (unless it has no name). As for the attributes object, you can put the keys on it directly, no need to make another level with + (object)

Hope this helps!

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • MSON,让JSON序列化更快
    问题我们经常需要在主线程中读取一些配置文件或者缓存数据,最常用的结构化存储数据的方式就是将对象序列化为JSON字符串保存起来,这种方式特别简单而且可以和SharedPrefrence配合使用,因此应用广泛。但是目前用到的Gson在序列化JSON时很慢,在读取解析这些必要的配置文件时性能不佳,导致卡顿启动速度减慢等问题。Gson的问题在哪里呢?笔者用AndroidStudio的profile工具分析了activity.onCreate方法的耗时情况。图 1图 2如图1,可以发现Gson序列化占用了大部分的执行时间,从图2可以更直观地看到Gson.fromJson占用了61%的执行时间。分析Gson的源码可以发现,它在序列化时大量使用了反射,每一个field,每一个get、set都需要用反射,由此带来了性能问题。如何优化知道了性能的瓶颈之后,我们如何去修改呢?我能想到的方法就是尽量减少反射。Android框架中由JSONObject来提供轻量级的JSON序列化工具,所以我选择用Android框架中的JSONObject来做序列化,然后手动复制到bean就可以去掉所有的反射。我做了个简单的测试,分别用Gson和JSONObject的方式去序列化一个bean,看下各自速度如何。使用JSONObject的实现方式如下:public class Bean { public String key
  • 为没有使用过“类”和“对象”的人定义最好的方法是什么?(What's the best way to define the words “class” and “object” to someone who hasn't used them?)
    问题 我的邻居正在学习“ Java入门”,并请我帮助解释一些第一天的概念。 我意识到,由于我每天都这样做,所以我没有初学者的想法,因此很难从头开始将其中的某些内容联系起来。 对于我来说,实际上并非不重要的一个解释是“什么是一堂课?” 到目前为止,我最好的: 变量保存某种数据; 一个变量可能是名字,另一个变量可能是您的体重(磅)。 方法是一个函数,它可以完成工作,并且可以使用这些变量来完成工作。 一种方法可能会在屏幕上显示您的姓名,或者告诉您要拥有一个良好的BMI比率您应该减掉多少体重。 一个对象既包含变量又包含方法。 一个对象可能代表您,第二个对象可能代表我。 类是一种蓝图或模板,用于描述将在每个对象中使用的方法和变量。 对象是实例化的(一个实例)类; 一个对象就是某种东西,而类仅仅是制造这种东西的计划。 继续该示例,我们有一个Person对象,该对象实例化以保存Alice的数据,另一个Person对象被实例化以保存Bob的数据,另一个实例化为Carol,依此类推。 我如何调整此示例以使其更有意义,和/或有什么更好的方法? 此时,“实例化”一词感觉太沉重了。 (我认为这是一个有用的问题,但显然是主观的;标记为社区Wiki。) 回答1 一个类和一些类实例: (由Wikipedia托管的公共领域图片) 回答2 类:对象::蓝图:建筑 回答3 “汽车”是一类。
  • UE4 一些实践建议
    Interfaces优先于Cast。通常,我们将Actor或组件强制转换为能够访问其方法所需的Class类型,但是强制转换不仅在性能方面比Interfaces昂贵,而且实现起来也很烦人。尝试一下Interfaces。 使用组件共享行为。很多时候我们过多地依赖继承,以便在参与者之间共享行为。继承不一定全是错误的,但是比如游戏有两种类型的施加伤害的Actor:炮塔和角色。在这种情况下,您可以创建一个名为Damager的组件,并将其添加到两个Actor中。两个Actor都能够施加伤害,而不必担心他们是谁继承的。隐藏对象的不可自定义属性。当Actor或Components具有变量时,您可以将它们从“详细信息窗格”中隐藏。只需单击要隐藏的变量,然后查找它们公开的“Advanced Display”属性并进行检查。之后,调整该Actor或Component或任何其他对象时,您将不再在“详细信息”窗格中看到此变量。自动对齐连线。您创建了一个很棒的蓝图,里面到处都是节点。但是由于连线,它看起来像一团糟。快速改善这种情况的一件事是选择两个连接的节点并按“ Q”。 按Q前: 按Q后: 避免将持久状态存储在组件(Component)中。这更多地与有存档的游戏有关。无论使用哪种插件,还是想出自己的保存方法/解决方案,持久存储组件的变量都可能成为负担
  • 类和对象实例之间有什么区别?(What is the difference between classes and object instances?)
    问题 类是方法和变量在单个单元中的绑定。 对象是类的实例。 这些是编程书籍中类和对象的定义。 我的朋友说,类是对象的蓝图。 对象是蓝图的真实“事物”。 他举了一个例子:如果Company是一个类,则INFOSYS,CTS和TCS等是对象。 每当我想到类和对象时,这些定义都会使我感到困惑。 如果channel是一个类,那么该类的对象是什么? 如果说水是阶级,那阶级的对象是什么? 你能澄清一下吗? 回答1 如果channel是一类,则“开始体育”,“ BBC”和“ ESPN”是其对象。 如果水是一类,则以“新鲜石灰水”和“汤”为对象。 尽管您可能会觉得这种解释含糊不清,但这是我能想到的答案。 这是您可以学习和区分类的方法: 假设您有一个“汽车”课程 它的对象是现代,福特,铃木。 它将具有相同的方法,但设计会有所不同->这就是将对象和类与现实世界联系起来的方式。 回答2 一个类指定其实例的行为。 类也是类的实例(类的类称为“元类”)。 类是一个抽象。 您可以通过找到适用于一组对象的通用属性来找到一个类。 然后,一个类是一个模板,它定义要包含在特定种类的对象中的方法(行为)和变量(状态) 班级(教室外)的识别需要经验。 从Alan Kay那里读到任何东西,他是Object Technology的发明者,也是Smalltalk的发明者之一,Smalltalk是迄今为止唯一的纯对象环境。
  • 【第767期】你不懂JS:混合(淆)“类”的对象
    前言又到周五了,这周是不是被这一系列的文章看的有点晕,如果拿着一本书会觉得挺多的,不一定能看完,但每天跟着阅读一篇可能就不会觉得多了,你觉得呢?今天继续由前端早读课专栏作者@HetfieldJoe带来连载《你不懂JS》的分享。正文从这开始~你不懂JS:this与对象原型 第四章:混合(淆)“类”的对象接着我们上一章对对象的探索,我们很自然的将注意力转移到“面向对象(OO)编程”,与“类(class)”。我们先将“面向类”作为设计模式来看看,之后我们再考察“类”的机制:“实例化(instantiation)”, “继承(inheritance)”与“相对多态(relative polymorphism)”。我们将会看到,这些概念并不是非常自然地映射到JS的对象机制上,以及许多JavaScript开发者为了克服这些挑战所做的努力(mixins等)。注意: 这一章花了相当一部分时间(前一半!)在着重解释“面向对象编程”理论上。在后半部分讨论“Mixins(混合)”时,我们最终会将这些理论与真实且实际的JavaScript代码联系起来。但是这里首先要蹚过许多概念和假想代码,所以可别迷路了——坚持下去!类(Class)理论“类/继承”描述了一种特定的代码组织和结构形式——一种在我们的软件中对真实世界的建模方法。OO或者面向类的编程强调数据和操作它的行为之间有固有的联系(当然
  • 如何在C#中序列化Exception对象?(How to serialize an Exception object in C#?)
    问题 我正在尝试在C#中序列化一个Exception对象。 但是,由于Exception类未标记为[Serializable],因此似乎是不可能的。 有办法解决这个问题吗? 如果在应用程序执行过程中出了点问题,我想知道发生的异常。 我的第一反应是将其序列化。 回答1 我之前所做的是创建一个自定义的Error类。 它封装了有关Exception的所有相关信息,并且可以XML序列化。 [Serializable] public class Error { public DateTime TimeStamp { get; set; } public string Message { get; set; } public string StackTrace { get; set; } public Error() { this.TimeStamp = DateTime.Now; } public Error(string Message) : this() { this.Message = Message; } public Error(System.Exception ex) : this(ex.Message) { this.StackTrace = ex.StackTrace; } public override string ToString() { return this
  • to_xml Doesn't Work on Objects Returned Through Rails ActiveRecord habtm Reference
    I have two rails active record classes, School and Instructor linked by a has_and_belongs_to_many relationship. I need to query my instructors_controller for instructors for a particular school and return an xml format response. Therefore, in the index method I have this code fragment: school = School.find(params[:school_id]) @instructors = school.instructors and later: respond_to do |format| format.html # index.html.erb format.xml { render :xml => @instructors } format.json { render :json => @instructors } end But it doesn't work. Look at this intriguing but baffling sequence: ruby-1.9.2-p180
  • 我如何使用类?(How do I use classes?)
    问题 我对编程还很陌生,有一件事让我感到困惑。 什么是类,如何使用类? 我有点明白,但我似乎无法找到完整的答案。 顺便说一句,如果这是特定于语言的,那么我正在用 PHP 编程。 编辑:还有一件事我忘了说。 具体来说,我想询问如何在类中使用定义函数。 我见过在类中定义函数的 PHP 代码示例,但我真的不明白为什么。 回答1 尽可能简洁:一个类描述了一组可以对自身执行操作的数据。 例如,您可能有一个表示图像的类。 此类的对象将包含描述图像所需的所有数据,然后还将包含旋转、调整大小、裁剪等方法。它还具有可用于询问对象有关其自身属性的方法,像 getColorPalette 或 getWidth。 这与能够直接访问原始(非对象)数据集合中的调色板或宽度相反 - 通过通过类方法访问数据,对象可以强制执行保持一致性的约束(例如,您不应该更改宽度变量而不实际将图像数据更改为该宽度)。 这就是面向对象编程与过程编程的不同之处。 在过程式编程中,你有数据,也有函数。 函数作用于数据,但没有数据的“所有权”,数据和使用它的函数之间也没有基本的联系。 在面向对象的编程中,您拥有的对象是数据与动作的组合。 每种类型的数据都有一组定义的操作,它可以对自身执行,以及一组定义的属性,它允许函数和其他对象以定义的、尊重约束的方式读取和写入。 重点是将程序的各个部分相互分离。 使用 Image 类
  • 如何将任意参数传递给烧瓶蓝图?(How to pass arbitrary arguments to a flask blueprint?)
    问题 我有一个包装在对象中的烧瓶API。 这样做使单元测试变得轻而易举,因为我可以使用各种不同的设置实例化api,具体取决于它是生产,测试还是其他。 我现在正尝试扩展api,为此,我正在使用蓝图。 问题是我无法弄清楚如何将参数传递给蓝图。 我的路线需要信息,例如要访问的数据库,并且该信息不是静态的。 如何将这些信息传递到蓝图中? 我以下面的代码为例: api.py: class MyApi(object): def __init__(self, databaseURI): self.app = Flask(__name__) self.app.register_blueprint(myblueprint) blueprint.py myblueprint= Blueprint('myblueprint', __name__) @myblueprint.route('/route', methods=['GET']) def route(): database = OpenDatabaseConnection(databaseURI) 这里有一个相关的问题:如何将构造函数参数传递给Flask蓝图? 但是,回答问题的人可以解决op的用例特定问题,而无需实际回答如何将任意参数传递给蓝图的问题。 回答1 您可以在构造函数中动态创建蓝图: def construct_blueprint
  • 什么是类,引用和对象?(What are classes, references and objects?)
    问题 我从事Java编程已有两年了,显然我遇到了一个问题,我又无法理解和区分类,引用和对象(我不明白为什么我忘记了这些概念)。 让我们来解决这个问题,尽管我已经知道什么是对象,但是我不确定类或引用是否相同。 有人可以很好地理解并且完整地区分什么是类,引用和对象吗? 我所知道的是,该类更像是对象的模板(房屋的蓝图,其中类是蓝图,而房屋是一个对象)。 回答1 如果您喜欢隐喻的隐喻: 一堂课就像一所房子的蓝图。 使用此蓝图,您可以建造任意数量的房屋。 您建造的每个房屋(或用OO语言实例化)都是一个对象,也称为实例。 每个房子当然都有一个地址。 如果您想告诉某人房子在哪里,请给他们一张卡片,上面写上地址。 该卡是对象的参考。 如果要参观房屋,请查看卡上写的地址。 这称为解引用。 您可以随意复制该参考,但是只有一所房子-您只是在复制上面有地址的卡,而不是房子本身。 在Java中,您不能直接访问对象,只能使用引用。 Java不会相互复制或分配对象。 但是您可以复制引用并将其分配给变量,以便它们引用同一对象。 Java方法始终是按值传递的,但是该值可以是对象的引用。 所以,如果我有: Foo myFoo = new Foo(); // 1 callBar(myFoo); // 2 myFoo.doSomething() // 4 void callBar(Foo foo) { foo = new
  • UE4学习路线
    *路线*: 1.C++基础扎实 2.采用C++编写游戏逻辑 3.适用虚幻引擎底层C++框架 4.Module配置和插件使用 5.UBT和UHT 6.掌握Core模块的C++库:Fstring,Tarray,YE_LOG..... 7.熟悉了解掌握CoreUObject:宏,GC,序列化...... 8.熟悉C++和BP交互的方式 *学会C++的标志*: 1.懂得解决各种编译链接错误,常是因为Module配置出错 2.懂得常见编写套路,CreateDefaultSuBObject,UPROPERTY...... 3.理解UObject内存管理机制,不会经常造成内存崩溃 4.可以在源码里找到自己想要的代码块 *需要看的官方文档*: 动作RPG游戏|平衡蓝图与C++ *学习UE4C++的时机* 1.把蓝图学明白用明白 2.熟悉引擎GamePlay框架概念 3.引擎各模块功能,动画蓝图,AI,UMG.. *什么时候算学会蓝图* 1.熟练类,结构,枚举,接口,回调 2.熟悉蓝图的设计模式和结构 3.可以数据驱动,灵活掌握引擎各种辅助工具 4.具有结构性思想 *虚幻C++学习要点* 1.Core 1.1.看懂TArray.TSet.TMap各种容器, 1.2.FString,FName,FText的操作互转 1.3TSharedPtr.TsharendRef,TWeakPtr等各种智能指针 1
  • flask-login不能在Blueprint对象中使用?(flask-login can not be used in Blueprint object?)
    问题 我对烧瓶登录和蓝图有疑问。 管理员 admin = Blueprint('admin', __name__) login_manager = LoginManager() login_manager.setup_app(admin) @login_manager.user_loader def load_user(userid): return User.query.get(int(userid)) @admin.route('/login', methods=["GET", "POST"]) def login(): login_form = LoginForm() if request.method == 'POST': #####user validation#### login_user(user) return redirect('/') return render_template('admin/login.html', login_form=login_form) 运行 app = Flask(__name__) app.config.from_object(blog_config) app.register_blueprint(admin) if __name__ == "__main__": app.run(debug=True) 但是
  • OpenDaylight Carbon二次开发实用指南
    通过本文你将知道:Maven Archetype的基本原理以及如何使用Maven Archetype生成适用于不同版本的ODL子项目。本文将着重讲解cli命令开发,以及Carbon Release中新引入的Blueprint的一些基本知识。OpenDaylight Carbon Release中模块运行的大致流程以及对于api和impl的开发可以参考ODL碳版本模块开发及流程梳理还有ODL controller官方开发指南(它对DataStore的描述相当不错)。如何将编写好的应用添加到一个正在运行的OpenDaylight控制器中。Maven Archetype的原理与其在OpenDaylight中的应用Archetype[1]是一个Maven项目模板的工具。它提供了一种快速生成一致的Maven项目的方法。事实上OpenDaylight的Archetype存储在controller项目中。大家可以从github或者git.opendaylight.org中访问controller项目,并找到Archetype对应的位置。在作者编写本篇教程时,使用下述URI下载的Archetype源码(建议使用git clone下载该源码,方便后面使用git checkout切换源码版本)。1https://github.com/opendaylight/controller/tree
  • Using Flask-SQLAlchemy in Blueprint models without reference to the app [closed]
    Closed. This question is opinion-based. It is not currently accepting answers. Want to improve this question? Update the question so it can be answered with facts and citations by editing this post. Closed 2 years ago. Improve this question I'm trying to create a "modular application" in Flask using Blueprints. When creating models, however, I'm running into the problem of having to reference the app in order to get the db-object provided by Flask-SQLAlchemy. I'd like to be able to use some blueprints with more than one app (similar to how Django apps can be used), so this is not a good
  • flask-login can not be used in Blueprint object?
    I have a question regarding flask-login and blueprint. admin.py admin = Blueprint('admin', __name__) login_manager = LoginManager() login_manager.setup_app(admin) @login_manager.user_loader def load_user(userid): return User.query.get(int(userid)) @admin.route('/login', methods=["GET", "POST"]) def login(): login_form = LoginForm() if request.method == 'POST': #####user validation#### login_user(user) return redirect('/') return render_template('admin/login.html', login_form=login_form) run.py app = Flask(__name__) app.config.from_object(blog_config) app.register_blueprint(admin) if __name__ =
  • 在不参考应用程序的情况下在蓝图模型中使用Flask-SQLAlchemy(Using Flask-SQLAlchemy in Blueprint models without reference to the app [closed])
    问题 关门了。 这个问题是基于意见的。 它当前不接受答案。 想要改善这个问题吗? 更新问题,以便可以通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 改善这个问题 我正在尝试使用蓝图在Flask中创建一个“模块化应用程序”。 但是,在创建模型时,我遇到了必须引用该应用程序才能获取Flask-SQLAlchemy提供的db -object的问题。 我希望能够在多个应用程序中使用一些蓝图(类似于Django应用程序的使用方式),所以这不是一个好的解决方案。* 可以进行切换,并让蓝图创建db实例,然后该应用程序将其与蓝图的其余部分一起导入。 但是随后,任何其他希望创建模型的蓝图都需要从该蓝图而不是应用程序中导入。 因此,我的问题是: 有没有一种方法可以让蓝图定义模型,而又不知道它们以后将使用的应用程序-并且有几张蓝图组合在一起? 通过这种方式,我的意思是必须从您的蓝图导入应用程序模块/软件包。 我从一开始就错了吗? 蓝图是否不意味着要独立于应用程序而是可以重新分发(例如Django应用程序)? 如果没有,那么您应该使用什么模式来创建类似的东西? 烧瓶扩展? 您是否应该简单地做到这一点-也许集中所有模型/方案以及Ruby on Rails? 编辑:我现在一直在考虑这个问题,这可能比Flask与SQLAlchemy更相关,因为在声明模型时必须具有declarative_base() 。
  • [源码解析] 并行分布式框架 Celery 之 worker 启动 (2)
    Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统,专注于实时处理的异步任务队列,同时也支持任务调度。Celery 是调用其Worker 组件来完成具体任务处理。前文讲了 Celery 启动过程的前半部分,本文继续后半部分的分析。[源码解析] 并行分布式框架 Celery 之 worker 启动 (2)目录[源码解析] 并行分布式框架 Celery 之 worker 启动 (2)3.1 start in Worker as a program3.2 start in blueprint3.2.4.1 Hub3.2.4.2 Pool3.2.4.3 Consumer3.2.1 回调 on_start in Worker3.2.2 基类on_start3.2.3 信号处理handler3.2.4 逐次调用step2.1 loader2.2 setup_defaults in worker2.3 setup_instance in worker2.4 Blueprint2.5 Blueprint基类2.3.1 setup_queues2.5.1 获取定义的steps2.5.2 _finalize_steps2.5.3 返回依赖排序后step2.5.4 生成组件2.5.5 返回worker0x00 摘要0x01 前文回顾0x2 Worker as a program0x3
  • 假如你是架构师,你要做些什么
    很多做软件开发同学的梦想都是成为一名架构师,而架构师的核心工作就是做好软件设计。软件设计是软件开发过程中的一个重要环节,那么如何进行软件设计,其输出标准又是什么呢?软件设计过程中,如何和各个相关方沟通,使软件设计能同时满足用户的功能需求和非功能需求,并降低公司的开发成本? 前期思考  很多软件开发同学的职业规划都是架构师,试想这样一个场景,如果公司安排你做架构师,让你在项目开发前期进行了一些架构设计。你该如何开展你的工作?应该如何说出你的工作成果?你如何确定你的设计是否满足用户需求的?你是否有把握最后交付的软件是满足要求的?是否有把握让软件团队每个工程师清晰了解自己的职责范围,并有效的完成开发工作?  架构师的核心工作就是做好软件架构设计,软件设计是软件开发过程中一个重要的环节。如何进行软件设计?软件设计的输出是什么?软件升级过程中如何和各个相关方沟通?软件设计如何既能满足用户的功能需求,又能满足用户的非功能需求,也能满足用户的成本要求?如何能够使开发工程师,测试工程师,运维工程师,理解软件的整体架构,主要模块划分,关键技术实现,核心领域模型,使他们能够做好自己的工作,从而使整个软件开发过程,处于一个可控的范围之内,并在软件开发之初,就对软件未来的蓝图有个清晰的认识?  以上这些诉求可以说是软件开发管理与技术的核心诉求,这些问题搞定了,软件的开发过程和结果也就得到了保障
  • [源码解析] 并行分布式框架 Celery 之 worker 启动 (2)
    [源码解析] 并行分布式框架 Celery 之 worker 启动 (2) 文章目录 [源码解析] 并行分布式框架 Celery 之 worker 启动 (2)0x00 摘要0x01 前文回顾0x2 Worker as a program2.1 loader2.2 setup_defaults in worker2.3 setup_instance in worker2.3.1 setup_queues 2.4 Blueprint2.5 Blueprint基类2.5.1 获取定义的steps2.5.2 _finalize_steps2.5.3 返回依赖排序后step2.5.4 生成组件2.5.5 返回worker 0x3 start in worker 命令3.1 start in Worker as a program3.2 start in blueprint3.2.1 回调 on_start in Worker3.2.2 基类on_start3.2.3 信号处理handler3.2.4 逐次调用step3.2.4.1 Hub3.2.4.2 Pool3.2.4.3 Consumer 0x4 本文总结0xFF 参考 0x00 摘要 Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统,专注于实时处理的异步任务队列,同时也支持任务调度。Celery 是调用其Worker
  • 翻译Houdini官方对UE4新版插件的介绍:Houdini Engine for Unreal - V2
    原视频:Houdini For Unreal - YouTube 目录 介绍0. 总览1. 简介HoudiniEngine2. UE4的HoudiniEngine - 第二版为什么要做“第二版” ?What's new? - 核心What's new? - 输出(1)What's new? - 输出(2)What's new? - 输入What's new? - 参数What's new? - 综合What's new? - 蓝图支持What's new? - PDG Asset LinkWhat's new? - World Composition在哪得到插件 3. Houdini Niagara 插件4. Houdini KineFX 实时链接插件5. 路线图学习资源 介绍 Houdini与虚幻引擎以多种方式强强联合。资深3D软件开发者Damien Pernuit 将讨论: 第二版的虚幻引擎 Houdini Engine 插件Niagara插件实时链接(Live-Link) 此演讲和最近的新闻有关——UE4的Houdini Engine现在免费提供给商业客户。 你可以在此处了解更多信息: https://www.sidefx.com/community/houdini-engine-for-unreal-and-unity/ 0. 总览 大家好,我是Damien Pernuit