SQLの窓 イラストAC フリー素材

2017年08月05日

イラストAC : 惑星都市の風景(1600x1590)

最初、1600x1200 でいろいろやってたのですが、縦に長いビルディングの風景を効果的に入れるには、縦を長くする必要があると思い、1600x1590 の大きさにしました。イラストAC が 1600x1600 以上はダメだと書いてあったので、試すのもなんなので 1600x1590 にしています。



▼ Military Tank が良く見える『惑星都市の風景(Haze)』


DAZ3D : Military Tank

Military Tank の向こうにはロボットが居て、ビルの横にはバイクが置いてあったり。下の画像は反対側のカメラで、モンスターに労働してもらってレンダリングしてます。



イラストAC の環境マップは一般的なものを使っていますが、例えばこんなふうにもいろんな顔を持った画像にもすぐ変えれたりもします。




posted by at 2017-08-05 14:55 | Comment(0) | 壁紙 : イラストAC | このブログの読者になる | 更新情報をチェックする

2017年07月14日

DAZStudio のユーザレイアウトの保存場所

DAZStudio 4.8 から DAZStudio 4.9 に更新したら、レイアウトがぶっ壊れたので、既にDAZStudio 4.9 をインストール済みの PC からコピーして復帰しました。



既存のスーパーレイアウト(なんかツールバーになんでもある)でもいいのですが、慣れるまでは昔のレイアウト使おうと思ってます。



メニューからの保存と選択








タグ:DAZ3D DAZStudio
posted by at 2017-07-14 05:26 | Comment(0) | DAZ3D | このブログの読者になる | 更新情報をチェックする

2017年07月02日

Android Studio : LiveDoor のお天気情報をリストビューに表示した後、第二画面で name を変更して第一画面で再表示する手順

Android Studio : LiveDoor のお天気情報をリストビューに表示する手順 から続いている処理です


Intent でデータを送れるように、クラスを変更

Serializable インタフェース を追加
import java.io.Serializable;

public class WebData implements Serializable {

	String link;
	String name;

	@Override
	public String toString() {
		return name;
	}
}


Activity を追加して画面作成
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Main2Activity">
    <Button
        android:id="@+id/buttonReturn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="戻る" />

    <TextView
        android:id="@+id/textViewLink"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:text="TextView"
        android:textSize="20sp"/>

    <TextView
        android:id="@+id/textViewName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="6dp"
        android:text="TextView"
        android:textSize="30sp"/>

    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPersonName"
        android:textSize="30sp"/>

    <Button
        android:id="@+id/buttonUpdate"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="更新"
        android:textSize="20sp"/>

</LinearLayout>


ListView に イベント処理を追加

選択した位置を保存する為に private int position; を定義
		listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

				// 行データを取得
				ArrayAdapter<WebData> arrayAdapter = (ArrayAdapter<WebData>) parent.getAdapter();
				WebData webData = arrayAdapter.getItem(position);

				// 行データを次画面に渡す
				Intent intent = new Intent(MainActivity.this,Main2Activity.class);
				intent.putExtra("DATA",webData);
				MainActivity.this.startActivityForResult(intent, 101);

				// 選択した行を保存
				MainActivity.this.position = position;

			}
		});


第二画面から戻って来た時の処理を追加

第二画面で変更された行データを使用して ListView を再表示する
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);

		if ( requestCode == 101  ) {

			if ( resultCode == MainActivity.RESULT_OK ) {
				// ボタンの種類
				String result = data.getStringExtra("RESULT");
				if ( result.equals("終わったよ") ) {

				}
				if ( result.equals("更新したよ") ) {

					// 更新後データの取得
					WebData webData_update = (WebData) data.getSerializableExtra("DATA");

					WebData webData_listview = arrayAdapter.getItem(MainActivity.this.position);
					// 更新されたデータのセット
					webData_listview.name = webData_update.name;
					// 再表示
					listView.setAdapter(arrayAdapter);

				}
			}

		}

	}


第二画面に変数定義

private TextView link;
private TextView name;
private EditText editText;

第二画面の初期画面表示

以降、onCreate にて
		// 画面コントロールのインスタンス取得
		link = (TextView) Main2Activity.this.findViewById(R.id.textViewLink);
		name = (TextView) Main2Activity.this.findViewById(R.id.textViewName);
		editText = (EditText) Main2Activity.this.findViewById(R.id.editText);

		// データの取得
		Intent intent = Main2Activity.this.getIntent();
		WebData webData = (WebData) intent.getSerializableExtra("DATA");

		// データのセット
		link.setText(webData.link);
		name.setText(webData.name);
		editText.setText(webData.name);

ただ戻るだけのボタンの処理
		Button buttonReturn = (Button) Main2Activity.this.findViewById(R.id.buttonReturn);
		buttonReturn.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {

				Intent intent = new Intent();
				intent.putExtra("RESULT", "終わったよ");
				setResult(Main2Activity.RESULT_OK, intent);

				// 第二画面終了
				Main2Activity.this.finish();

			}
		});


画面上の更新処理
		Button buttonUpdate = (Button) Main2Activity.this.findViewById(R.id.buttonUpdate);
		buttonUpdate.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {

				Intent intent = new Intent();
				intent.putExtra("RESULT", "更新したよ");

				Intent intentStart = Main2Activity.this.getIntent();
				WebData webData = (WebData) intentStart.getSerializableExtra("DATA");
				// 入力内容をセットする
				webData.name = editText.getText().toString();

				intent.putExtra("DATA", webData);
				setResult(Main2Activity.RESULT_OK, intent);

				// 第二画面終了
				Main2Activity.this.finish();

			}
		});






posted by at 2017-07-02 00:47 | Comment(0) | Android | このブログの読者になる | 更新情報をチェックする

2017年07月01日

Android Studio : LiveDoor のお天気情報をリストビューに表示する手順

手順1

AndroidManifest.xml に、以下を追加する

<uses-permission android:name="android.permission.INTERNET"/>

手順2

build.gradle(Module) に、OkhttpGoogle Gson の記述を追加する
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
    compile 'com.squareup.okhttp3:okhttp:3.8.1'
    compile 'com.google.code.gson:gson:2.8.1'

}


activity_main.xml に ListView をセット
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>


JSON データをデシリアイズする為のクラスを作成
public class Weather {

	WebData[] pinpointLocations;

}
public class WebData {

	String link;
	String name;

	@Override
	public String toString() {
		return name;
	}
}

インターネットアクセス用のクラス

HttpAccess クラスを追加
import android.os.AsyncTask;

import java.io.IOException;

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class HttpAccess {

	private OkHttpClient okHttpClient;
	private String url;

	public interface OnAsyncTaskListener {
		abstract public void onAsyncTaskListener(String s);
	}

	public HttpAccess(String url) {
		this.okHttpClient = new OkHttpClient();
		this.url = url;
	}

	public void sendGet(final OnAsyncTaskListener listener ) {

		new AsyncTask<Void,Void,String>(){
			@Override
			protected String doInBackground(Void... params) {
				String result = "[\"error\"]";

				Request.Builder builder = new Request.Builder();
				builder.url(HttpAccess.this.url);
				Request request = builder.build();

				Response response = null;
				try {
					response = HttpAccess.this.okHttpClient.newCall(request).execute();
					result = response.body().string();
				}
				catch (IOException e) {
					e.printStackTrace();
				}

				return result;
			}

			// UI スレッド処理
			@Override
			protected void onPostExecute(String s) {
				super.onPostExecute(s);

				listener.onAsyncTaskListener(s);

			}
		}.execute();

	}

}


private 変数を三つ作成
private ListView listView;
private ArrayAdapter<WebData> arrayAdapter;
private HttpAccess httpAccess;


ListView と ArrayAdapter のインスタンスを作成

以降 onCreate にて。
listView = (ListView) MainActivity.this.findViewById(R.id.listView);
arrayAdapter = new ArrayAdapter<WebData>(MainActivity.this,android.R.layout.simple_list_item_1);


ListView に ArrayAdapter をセット

listView.setAdapter(arrayAdapter);

API を呼び出して結果をリストビューにセット
new HttpAccess("http://weather.livedoor.com/forecast/webservice/json/v1?city=270000")
	.sendGet(new HttpAccess.OnAsyncTaskListener() {
		@Override
		public void onAsyncTaskListener(String s) {

			Gson gson = new Gson();
			Weather weather = gson.fromJson(s, Weather.class);

			arrayAdapter.clear();
			arrayAdapter.addAll(weather.pinpointLocations);

		}
	});


さらに Intent で第二画面

Android Studio : LiveDoor のお天気情報をリストビューに表示した後、第二画面で name を変更して第一画面で再表示する手順



タグ:android java
posted by at 2017-07-01 23:08 | Comment(0) | Android | このブログの読者になる | 更新情報をチェックする

2017年06月27日

DAZ3D : ホワイト・ブロンドのダークエルフ


最大表示 

この画像は、イラストAC から 1600x1200 でフリーダウンロードできます。その画像をデスクトップの壁紙(1280x1024)として使用し、アイコンを非表示にして、DAZStudioの 4.8 で開いて Iray ビューで表示している状態です。

※ DAZStudio の 4.9 は、Windows10 で運用しており、通常作業するのが Windows7 です。

キャラクタ自体は昔に作った V4 ですが、パンツは Genesis2 のものです。基本的に背景も V4 当時に手に入れた古いものばかりですが、シェーダーは Iray 用を使ってそれなりに見えるように頑張っています。また、衣装の一部にもところどころ Iray のシェーダーで引き締めた感じです。

髪は、Daria Hair for Aiko 4 を使用していますが、アニメチックでいいものが A4 のHair では多いので、今じゃかなり安くなっていると思うのでお勧めです。それがたとえ A3 用でも、髪だと Head にさえ固定していれば、必ずしも Fit させる必要も無いのでどの世代でも使えるはずです。

背景は Saxon RuinsIray のシェーダーを使ってから縦横のスケール調整をしています。
※ Mec4d PBS Shaders vol.2 for Iray( vol.2 がおすすめ vol.1 はイマイチ )

以下はこの記事用に髪を変えて、ブーツを調整してレンダリングしました。



もともと、ブーツは V4 用で最初から装着していたのですが、パンツも履かせたので混じってしまっていたので、ブーツを パンツにフィットさせ、Smoothing Modifier を適用して Collision を少し大きめにセットしました。

超有名な方法ですね。

※ もし、くるぶしより先が変な具合になる場合は、V4 本体のその部分を非表示に設定します。



posted by at 2017-06-27 14:40 | Comment(0) | Iray DAZ3D DAZStudio | このブログの読者になる | 更新情報をチェックする

2017年06月05日

DAZ3D : 最近景観ばっかり作ってますが、結局シェーダー効果とIray ドームの光源効果のテストです。

作ってて楽しいし、それなりのものが仕上がる事が多いせいもあります。人物ですと、どうしてもなんらかの意味を持たせたキャラであったり動作が必要だし、表情やら背景も作らないと仕上がらないので『しんどい』ってせいもたぶんあります。

ま、とにかく GTX980 買ってまだ一年経ってないし、レンダリングして楽しいんだから幸せではあります。



こいつは、2400x1200 の画像を 1280x1024 のデスクトップの壁紙にしてみたものです。元は以下のようになってます。


幅1200で表示 

TerraDome3 の標準 HDR Skies の一つを使用しています。巨大な惑星は Cutout Opacity で透明度を与えて大気の向こうに存在するような感じを演出しているつもりです。ただ、透明なので模様が透けてよく考えるとおかしいですが、そこは空想世界の景観なので許せる範囲だと。

ちなみに、透明なしだとこんな感じです。



手前の山脈もシェーダをいろいろ変えて試していますが、光源によって色んな顔を見せてくれるのが楽しいです。

特に以下の空(光源)では、とても不思議なラインが強調されているのが解ります。


幅1200で表示 

なんか、アニメの背景で出てきそうなニュアンスです。

これは、1600x1200 でイラストAC に投稿しました。フリーダウンロードできます。



posted by at 2017-06-05 22:42 | Comment(0) | DAZ3D | このブログの読者になる | 更新情報をチェックする


Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX