three.js SpotLight方向(方向)问题

时间:2015-08-25 12:16:55

标签: javascript 3d three.js

嗯,这是问题,

实际上我试图实现的是在一些基本的三个例子中放置一些聚光灯。

以下是我尝试设置聚光灯目标位置的方法:

    [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string HelloWorld()
        {
            // getting connection string
            string conStr = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["DbConection"].ConnectionString;

            using (SqlConnection conn = new SqlConnection(conStr))
            {
                DataTable dt = new DataTable();
                SqlCommand cmd = new SqlCommand("select Id from customer", conn);
                conn.Open();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(dt);
                System.Web.Script.Serialization.JavaScriptSerializer serilizer = new System.Web.Script.Serialization.JavaScriptSerializer();
                List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
                Dictionary<string, object> row;
                foreach(DataRow dr in dt.Rows)
                {
                    row = new Dictionary<string, object>();
                    foreach(DataColumn col in dt.Columns)
                    {
                        row.Add(col.ColumnName,dr[col]);                
                    }
                    rows.Add(row);                
                }
                return serilizer.Serialize(rows);   
            }      

聚光灯(灯光)一直点亮点(0,0,0),即使我在console.log中找到了target.position。(x,y,z)它给了我正确的值...

这是我用完整的例子做的一个快速小提琴。

http://jsfiddle.net/1xfno37y/7/

1 个答案:

答案 0 :(得分:5)

您必须在更改后更新light.target(例如设置位置):

light.target.updateMatrixWorld();

或者只是将light.target添加到场景中:

scene.add( light.target );

Three.js r.71

http://jsfiddle.net/1xfno37y/19/

进一步阅读: Critical bug with spotLight.target.position #5555