工程1 在油管上看到一个UE4 IK动画的demo工程示例 该示例作者的主页:https://www.patreon.com/unrealcg 演示视频:Advanced foot IK for Unreal Engine 4 - (100% Free) https://www.youtube.com/watch?v=XetC9ivIXFc demo工程下载地址(4.19): https://pan.baidu.com/s/1mlcM0cseKWpprnISVM0P5Q 工程2 该工程除了IK,还包括动画融合、物理等功能 演示视频:UE4 - Advanced Locomotion System V3 - Features https://www.youtube.com/watch?v=yTniZCOCY7o 下载地址:Unreal商城,60刀 Advanced Locomotion System V3 https://www.unrealengine.com/marketplace/advanced-locomotion-system-v1 认识自己的无知是认识世界的最可靠的方法。---米歇尔·蒙田《随笔集》

Continue reading

参考自:Master pose vs copy pose vs mesh merge in UE4 https://iluvanimation.blogspot.tw/2017/04/master-pose-vs-copy-pose-vs-mesh-merge.html Since I get this question so often, I’m just writing quick summary for each. When you have different parts of bodies, and you want to allow players to pick which part they want, we have multiple choices, and people are wondering what are the main differences. Say you have head, upper body, lower body, and how do you allow them to pick and what are the differences?

Continue reading

keyworks:Animation Blueprint Inherit、Animation Blueprint Reuse、蓝图继承、蓝图重用、蓝图复用 三种方式可以重用动画蓝图逻辑: Blueprint Inherit(蓝图继承) Sub Animation Blueprint Instances Post Process Animation Blueprints Animation Blueprint Inherit(动画蓝图继承) 角色蓝图继承和动画蓝图继承有部分相似,这里先说下角色蓝图继承 右键角色蓝图 -》 Create Child Blueprint Class 这样创建出来的子蓝图,其构造函数中会自动生成一个执行父级蓝图构造函数的节点 其他的Event事件中,如果也需要调用父级蓝图的函数,可以右键对应节点 -》 Add call to parent function 动画蓝图也可以使用上述角色蓝图继承的方式。 但直接右键生成子蓝图的方式创建出来的动画蓝图,无法选择其他骨骼,只能保持和父级动画蓝图的骨骼一样 如果要创建一个与父级动画蓝图骨骼不同的子动画蓝图,可以先新建一个普通的动画蓝图 然后选择需要继承的父级动画蓝图,以及子动画蓝图的骨骼 这样生成出来的子动画蓝图,其Event Graph中,会自动生成一个执行调用父级蓝图的节点:Parent: Blueprint Update Animation Sub Animation Blueprint Instance Using Sub Anim Instances

Continue reading

keywords:UE4 Animation、Set Master Pose Component、customizable character、动画蓝图、换装 美术资源制作 每个身体部件(帽子、鞋子等)蒙皮时需要使用同一套骨骼(all pieces need to be skinned to the same skeleton) 每个身体部件导出时,该部件的关节与根关节之间的所有关节都需要选中导出。例如:假设盆骨为根关节(root joint),现在要导出手臂,那么手臂、肩膀、脊椎、盆骨的关节都需要选中导出。 角色蓝图中设置Master Pose 身体各个部件导入UE4之后,打开角色蓝图,为每个部件Add一个Skeleton Mesh Component,并将其Skeleton Mesh属性设置为对应的资源文件。 最后再在角色蓝图的Construction Script中Set Master Pose Component 这样,角色在播放动画时,每个部件就会跟随角色一起播放,而不会固定不动。 参考自:How to Setup “Master Pose Component” https://answers.unrealengine.com/questions/228601/how-to-setup-master-pose-component.html C++接口 Set Master Pose Component蓝图节点对应的C++ API: Child->SetMaseterPoseComponent(Body); 有一个传说,说的是有那么一只鸟儿,它一生只唱一次,那歌声比世上所有一切生灵的歌声都更加优美动听。---《荆棘鸟》

Continue reading

PC端开启Temporal AA 参考: https://forums.unrealengine.com/development-discussion/rendering/106829-sharp-temporal-aa/page2?134157-Sharp-Temporal-AA=&viewfull=1 移动端开启Temporal AA Project Settings -》 Engine -》 Rendering -》 Default Settings -》 Anti-Aliasing Method 选择 TemporalAA; Project Settings -》 Engine -》 Rendering -》 Mobile -》 Mobile MSAA 选择 NO MSAA,并确保配置DefaultEngine.ini中r.MobileMSAA=0。 4.19版本有bug,移动端无法开启Temporal AA,4.18没有问题。启用TemporalAA后,在Android设备上容易产生残影(转动屏幕或角色跑动时)。 我希望有个如你一般的人 如山间清爽的风 如古城温暖的光 从清晨到夜晚 由山野到书房 只要最后是你 就好 ——张嘉佳 《从你的全世界路过》

Continue reading

原文:http://www.cnblogs.com/graphics/archive/2010/07/05/1771110.html #include <iostream> #include <map> #include <string> using namespace std ; int main(void) { map<int, string> m ; m.insert(pair<int, string>(1, "abc")) ; m.insert(pair<int, string>(2, "def")) ; m.insert(pair<int, string>(3, "def")) ; m.insert(pair<int, string>(4, "ghi")) ; map<int, string>::iterator itor ; // 错误的写法 for (itor = m.begin(); itor != m.end(); ++itor) { if (itor->second == "def") { m.erase(itor) ; // map是关联式容器,调用erase后,当前迭代器已经失效 } } // 正确的写法 for (itor = m.begin(); itor != m.end();) { if (itor->second == "def") { m.

Continue reading

问题现象 4.19版本启用Substance Plugin后,Generate Visual Studio Project Files时报错: Exception while generating include data for UE4Editor: Unable to instantiate module 'SubstanceCore': System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet. à UnrealBuildTool.Rules.SubstanceCore..ctor(ReadOnlyTargetRules Target) dans d:\3D\UE4.19\UnrealEngine-release\Engine\Plugins\Substance\Source\SubstanceCore\SubstanceCore.Build.cs:ligne 116 (referenced via UE4Editor.Target.cs -> Substance.uplugin) 解决办法 修改:UE_4.19\Engine\Plugins\Marketplace\Substance\Source\SubstanceCore\SubstanceCore.Build.cs 将116行到124行注掉,并追加一行: IncludePS4Files = false; 参考自:https://forum.allegorithmic.com/index.php?topic=23285.0 你简单,世界就是童话;心复杂,世界就是迷宫。

Continue reading

Advanced Sessions Plugin https://forums.unrealengine.com/community/community-content-tools-and-tutorials/41043-advanced-sessions-plugin Online Subsystem Steam https://docs.unrealengine.com/en-us/Programming/Online/Steam Steam, Using the Steam SDK During Development https://wiki.unrealengine.com/Steam,_Using_the_Steam_SDK_During_Development Integrating Steam SDK – Part 1 http://orfeasel.com/steam_integration_p1/ Handling Steam Achievements – Steam Integration Part 2 http://orfeasel.com/handling-steam-achievements-steam-integration-part-2/ 中文翻译: 集成 Steam SDK(一) http://gad.qq.com/program/translateview/7191581 处理Steam成就系统——接入Steam SDK(二) http://gad.qq.com/program/translateview/7191582 Shipping模式下steam集成无效的问题 在打包输出目录下,例如:\WindowsNoEditor\MyProj\Binaries\Win64\,新建一个文本文件:steam_appid.txt,并且内容为“480”。480表示steam测试使用的app id。 参考自:Steam integration not working on a Shipping Build https://answers.unrealengine.com/questions/474029/steam-integration-not-working-on-a-shipping-build.html 人生没有彩排,每天都是直播。阳光,源自你内心的澄澈!

Continue reading

keywords:UE4、Lighting、灯光 Lighting Content Examples https://docs.unrealengine.com/en-us/Resources/ContentExamples/Lighting Light Propagation Volumes Light Propagation Volumes https://docs.unrealengine.com/en-us/Engine/Rendering/LightingAndShadows/LightPropagationVolumes Dynamic GI : Getting the Most out of LPV ( Light Propagation Volume ) https://forums.unrealengine.com/community/community-content-tools-and-tutorials/103572-dynamic-gi-getting-the-most-out-of-lpv-light-propagation-volume Lighting Channels https://docs.unrealengine.com/en-us/Engine/Rendering/LightingAndShadows/LightingChannels 注意事项: Lighting Channels是动态的,意思是:静态光(Static Lights)或者Mobility为Static的Static Mesh Actor不受Lighting Channels影响。要使用Lighting Channels,Static Mesh Actor和Lights的Mobility必须设置为Stationary或者Movable。 材质类型影响:Lighting Channels只影响直接光照(direct lighting)下Opaque类型材质,Translucent或者Masked类型材质没有效果。 Lighting Channels对性能开销不大,可以忽略不计。 移动端的Lighting Channels: 4.13版本开始,才支持移动端的Lighting Channel。 移动端多个Directional Light支持不同Lighting Channels。 一个Primitives只受一个Directional Light影响,如果primitves勾选了多个Lighting Channel,那么只会启用第一个。 CSM Shadows只会投射到与光源Lighting Channels相同的primitives上。 动态点光源在移动端支持Lighting Channels的所有特性,与桌面级特性相同。 Occlusion Culling 光源距离裁剪 Project Settings -》 Engine -》 Rendering -》 Culling

Continue reading

Post Process Materials https://docs.unrealengine.com/en-us/Engine/Rendering/PostProcessEffects/PostProcessMaterials Stylized Rendering Post Processing https://docs.unrealengine.com/en-us/Resources/Showcases/Stylized/PostProcessing Post Processing Content Examples https://docs.unrealengine.com/en-us/Resources/ContentExamples/PostProcessing 1.2 - ShadingModel https://docs.unrealengine.com/en-us/Resources/ContentExamples/MaterialProperties/1_2 抱必死的心,走永远的路。

Continue reading

[UE4]Shadows

keywords:UE4、Shadows、Scene Optimization、阴影、场景优化 Dynamic Scene Shadows https://docs.unrealengine.com/en-us/Resources/ContentExamples/DynamicSceneShadows Cascaded Shadows https://docs.unrealengine.com/en-us/Platforms/Mobile/Lighting/HowTo/CascadedShadow 人会长大三次。第一次是在发现自己不是世界中心的时候。第二次是在发现即使再怎么努力,终究还是有些事令人无能为力的时候。第三次是在,明知道有些事可能会无能为力,但还是会尽力争取的时候。

Continue reading

keywords:UE4、protobuf-lite、Android NDK、ParseFromArray、Crash protobuf与android ndk编译后,集成到UE4中执行时,每当执行ParseFromArray时就会崩溃(Windows版本没有问题): MessageTest msg; bool rs = msg.ParseFromArray(buffer, buffer_size); 解决办法:将ParseFromArray()函数内部的代码复制出来,放在工程的代码中,然后再执行。 protobuf 2.x #ifndef __ProtobufHelper_H__ #define __ProtobufHelper_H__ #include <google/protobuf/message_lite.h> #include <google/protobuf/io/coded_stream.h> class ProtobufHelper { public: static bool Parse(::google::protobuf::MessageLite& Message, const char* Data, int Size) { ::google::protobuf::io::CodedInputStream input(reinterpret_cast<const uint8*>(Data), Size); return Message.MergePartialFromCodedStream(&input) && input.ConsumedEntireMessage(); } }; #endif protobuf 3.x #ifndef __ProtobufHelper_H__ #define __ProtobufHelper_H__ #include <google/protobuf/message_lite.h> #include <google/protobuf/io/coded_stream.h> #include "CoreMinimal.h" class ProtobufHelper { public: static bool Parse(::google::protobuf::MessageLite& Message, const void* Data, int Size) { ::google::protobuf::io::CodedInputStream input(static_cast<const uint8*>(Data), Size); Message.

Continue reading

ifstream,ofstream读写二进制文件 #include <iostream> #include <fstream> using namespace std; int main(int argc, char** argv) { int a[5] = {1,2,3,4,5}; int b[5]; ofstream ouF; ouF.open("./me.dat", std::ofstream::binary); ouF.write(reinterpret_cast<const char*>(a), sizeof(int)*5); ouF.close(); ifstream inF; inF.open("./me.dat", std::ifstream::binary); inF.read(reinterpret_cast<char*>(b), sizeof(int)*5); inF.close(); for (int i = 0; i < 5; i++) { cout << b[i] << endl; } return 0; } 参考自:https://blog.csdn.net/bendanban/article/details/30039193 C模式读写二进制文件 //采用C模式写二进制文件 void DataWrite_CMode() { //准备数据 double pos[200]; for(int i = 0; i < 200; i ++ ) pos[i] = i ; //写出数据 FILE *fid; fid = fopen("binary.

Continue reading

protobuf源码NDK编译配置 假设工程结构如下: protobuf-build |-jni |- Android.mk |- Application.mk |- google |-protobuf Android.mk LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) CC_LITE_SRC_FILES := \ google/protobuf/arena.cc \ google/protobuf/arenastring.cc \ google/protobuf/extension_set.cc \ google/protobuf/generated_message_table_driven_lite.cc \ google/protobuf/generated_message_util.cc \ google/protobuf/io/coded_stream.cc \ google/protobuf/io/zero_copy_stream.cc \ google/protobuf/io/zero_copy_stream_impl_lite.cc \ google/protobuf/message_lite.cc \ google/protobuf/repeated_field.cc \ google/protobuf/stubs/atomicops_internals_x86_gcc.cc \ google/protobuf/stubs/atomicops_internals_x86_msvc.cc \ google/protobuf/stubs/bytestream.cc \ google/protobuf/stubs/common.cc \ google/protobuf/stubs/int128.cc \ google/protobuf/stubs/io_win32.cc \ google/protobuf/stubs/once.cc \ google/protobuf/stubs/status.cc \ google/protobuf/stubs/statusor.cc \ google/protobuf/stubs/stringpiece.cc \ google/protobuf/stubs/stringprintf.cc \ google/protobuf/stubs/structurally_valid.cc \ google/protobuf/stubs/strutil.cc \ google/protobuf/stubs/time.cc \ google/protobuf/wire_format_lite.

Continue reading

引用静态库头文件: LOCAL_C_INCLUDES += ../include/ 引用静态库: LOCAL_LDLIBS += ../lib/libMyBoostLib.a Android.mk: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := helloJNI LOCAL_SRC_FILES := mainActivity.cpp LOCAL_C_INCLUDES := $(LOCAL_PATH)/inc/ LOCAL_LDLIBS := -llog -L$(LOCAL_PATH)/inc/ -lMyLibrary include $(BUILD_SHARED_LIBRARY) Include prebuilt static library https://stackoverflow.com/questions/18983037/include-prebuilt-static-library 故兵无常势,水无常形。能因敌变化而取胜者,谓之神。故五行无常胜,四时无常位,日有短长,月有死生。

Continue reading

Author's picture

Neil Wang

久长唯有品格

TechArtist

Yichang·Hubei