Skip to content

Commit 20f995c

Browse files
authored
Wrote setup instructions
1 parent fdbde0b commit 20f995c

File tree

1 file changed

+58
-9
lines changed

1 file changed

+58
-9
lines changed

README.md

Lines changed: 58 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,71 @@
11
# pmUE
2-
pmUE (Protein Modelling Unreal Engine) - a repo for constructing a molecule visualizer plugin in Unreal
2+
pmUE (Protein Modelling Unreal Engine) - a repo for constructing a molecule visualizer plugin in Unreal.
3+
4+
Main contributor(s): Ilya Sergeevich Dementyev
35

46
### Most Recent Update
5-
Currently in the process of finishing up my thesis, so development will pick up later this year.
6-
In the meantime, feel free to contribute as always.
7+
This project will be released as a pre-release soon.
78

89
### Current abilities
9-
The current capabilities are shown below for Methane.pdb and AceticAcid.pdb respectively. Appropriate bonds and bond lengths must still be implemented.
10+
The current capabilities are shown below, for a small peptide seq: IKK. Appropriate bonds and bond lengths must still be implemented.
1011

11-
![Methane](/Screenshots/MethaneProperRadii.png "Spawned methane")
12-
![Acetic acid](/Screenshots/AceticAcidProperRadii.png "Spawned acetic acid")
1312
![6A5J IKK Peptide](/Screenshots/6A5JSmallIKK.png "Spawned IKK peptide from 6A5J, smaller HUD for future edits")
1413

14+
### How to use
15+
First, open up any UE4 version. To be safe, you may use the same one I did, `4.27.2` on Windows.
16+
17+
Let's say your current C++ UE4 session/project name is `YourProjectName`. Any UE4 project has an associated `YourProjectName.Build.cs` file, that appears as the following:
18+
```
19+
using UnrealBuildTool;
20+
21+
public class YourProjectName : ModuleRules
22+
{
23+
public YourProjectName(ReadOnlyTargetRules Target) : base(Target)
24+
{
25+
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
26+
27+
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });
28+
29+
PrivateDependencyModuleNames.AddRange(new string[] { });
30+
}
31+
}
32+
```
33+
After you've downloaded the source code, you'll want to add the following:
34+
```
35+
using UnrealBuildTool;
36+
using System.IO;
37+
38+
public class YourProjectName : ModuleRules
39+
{
40+
public YourProjectName(ReadOnlyTargetRules Target) : base(Target)
41+
{
42+
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
43+
44+
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });
45+
46+
PrivateDependencyModuleNames.AddRange(new string[] { });
47+
48+
PublicSystemIncludePaths.AddRange(new string[] { "PathToSource/Source" });
49+
}
50+
}
51+
```
52+
Making sure to do this for all of the folders.
53+
54+
Blueprints should be added to `YourProjectName/Content/YourProjectName/Blueprints`, Static Meshes to `YourProjectName/Content/YourProjectName/Art/StaticMeshes`, Materials to `YourProjectName/Content/YourProjectName/Art/Materials`
55+
56+
For the file that you want to visualize, you must first copy it to `YourProjectName/Source/YourProjectName/`, then write the name in the `FString FileName{ "filename.pdb" };` line in `FileData.h`. Currently, only PDB files are supported.
57+
58+
Once all of this is done, you must rebuild your UE4 C++ project `YourProjectName`.
59+
60+
If everything goes well, this should have not broken anything. Continuing on, load all blueprints into the Game World, and center them all at 0,0,0.
61+
62+
Then, upon pressing Play, your molecule should render as spheres, with the PDB file's centroid @ origin.
63+
1564
### Main Ideas
1665
1. Unreal Engine 4 (mainly in C++) used alongside Visual Studio 2019 for the majority of the work, with Doxygen-style commenting (html file will be added in a docs folder)
1766
2. pmUE will be more akin to an Unreal plugin than a standalone "game"
1867
3. If larger molecules will significantly slow down the viewer, then Nanite will be used.
1968

20-
### Atom Connectivity
21-
How atoms are connected will likely be modelled using graph theory. However, UE4 makes this difficult, as having an array within an array is not supported. Hence, a more inefficient, yet functional approach is needed. The best way to do this to my current knowledge is by constructing an array of indices for each atom, containing the indexes of the atoms they are connected to.
22-
2369
### Collaboration
2470
To my knowledge, I am the only individual working on this repo. As the code is slowly being developed, it is recommended to open your own branch if you'd like to add anything to the project. All contributions welcome!
2571

@@ -34,3 +80,6 @@ Of course, you may write this in whatever language is required for you to write
3480
Avogadro 1.2.0 was used for the creation of some models in [PDBFiles](https://github.com/ISDementyev/pmUE/tree/main/PDBFiles)
3581
- Avogadro: an open-source molecular builder and visualization tool. Version 1.XX. http://avogadro.cc/
3682
- Marcus D Hanwell, Donald E Curtis, David C Lonie, Tim Vandermeersch, Eva Zurek and Geoffrey R Hutchison; “Avogadro: An advanced semantic chemical editor, visualization, and analysis platform” [*Journal of Cheminformatics* **2012**, 4:17.](http://www.jcheminf.com/content/4/1/17)
83+
84+
The Protein Data Bank (PDB) was used for extracting of small peptides like 6A5J
85+
- The Protein Data Bank H.M. Berman, J. Westbrook, Z. Feng, G. Gilliland, T.N. Bhat, H. Weissig, I.N. Shindyalov, P.E. Bourne (2000) Nucleic Acids Research, 28: 235-242. [https://doi.org/10.1093/nar/28.1.235](https://doi.org/10.1093/nar/28.1.235)

0 commit comments

Comments
 (0)